문자열 의 일부 라 이브 러 리 함수 구현
2452 단어 문자열
그래서 strcmp 와 유사 한 몇 가지 함 수 를 실현 했다.
잠재 적 인 bug 가 있 을 수 있 습 니 다. 다른 함수 의 실현 을 계속 보완 하고 추가 할 것 입 니 다.
//
int mystrstr1(const char* string,const char* substring)
{
if(string==NULL||substring==NULL)return -1;
int s1=strlen(string);
int s2=strlen(substring);
if(s1<s2)return-1;
const char* temp=substring;
while(*string!='\0') //
{
if(*string==*substring) //
{
while(*substring!='\0') //
{
if(*(string++)!=*(substring++)) // ,
{
substring=temp;
--string;
break;
}
if(*substring=='\0')return 1; //
}
}
else
{
++string;
}
}
return -1;
}
//
char* mystrcpy(char* DestStr,const char* SrcStr) // const
{
if(DestStr==SrcStr)return DestStr; //
assert((DestStr!=NULL)&&(SrcStr!=NULL));
char* tempStr=DestStr;
while((*(DestStr++)=*(SrcStr++))!='\0'); // , '\0'
return tempStr; // ,
}
// 。 dsfsdfghyjkoooi, g。
char findDestChar(const char* str)
{
int hashTable[256]={0}; // byte, 256
const char* temp=str;
while(*str!='\0')
{
hashTable[*str]++;
str++;
}
while(*temp!='\0')
{
if(hashTable[*temp]==1)return *temp;
temp++;
}
return '\0';
}
//
int mystrcmp(const char* str1,const char* str2)
{
assert(str1!=NULL&&str2!=NULL);
while(*str1&&*str2&&*str1==*str2)
{
++str1;
++str2;
}
if(!(*str1)||!(*str2))return 0;
return (*str1-*str2);
}
//
char* mystrcat(char* destStr,const char* srcStr) // ?
{
assert(destStr!=NULL&&srcStr!=NULL);
char* temp=destStr;
while(*destStr!='\0'){++destStr; }
while((*destStr++ = *srcStr++)!='\0');
return temp;
}
//
int mystrlen(const char* str)
{
assert(str!=NULL);
int count=0;
while(*str++!='\0')
{
count++;
}
return count;
}
오래 배 울 수록 자신 이 모 르 는 것 이 많다 는 것 을 알 게 된다.이른바 학술 이란 끝 이 없고, 오직 영원히 멈 추 지 않 는 다.
내 글 의 또 다른 버 전: http://moxiaomomo.iteye.com/blog/1052815
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
비슷한 이름의 Attribute를 많이 만들어 삭제하는 Houdini사용 소프트웨어는 Houdini16.5입니다 배열에서는 애트리뷰트의 보간이 잘 동작하지 않는 것과 AttributeCreateSOP 노드에서 Size가 4를 넘는 애트리뷰트를 작성해도 값이 조작할 수 없어 의미가 없...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.