C言語におけるいくつかの重要な関数
4645 ワード
strcmp関数strcmpかんすう:比較文字列ひかくもじれつ
//C/C++ , , str1,str2,
// str1==str2, ;
// str1str2, 。
int strcmp(const char* str1, const char* str2)
{
while(*str1 == *str2 && *str1 != '\0')
{
++str1;
++str2;
}
return *str1 - *str2;
}
strcpy :
//strcpy src '\0' dest , char*。
//strcpy dst src
char* strcpy(char *dst, const char *src) //const ,
{
assert((src != NULL) && (dst != NULL)); // 0
char *pStr = dst; // dst
while ((*dst++ = *src++) != '\0') {}
return pStr; // dst,
}
strlen:
unsigned int Strlen(const char * str)
{
unsigned int length=0;
assert(str!=NULL);
while(str[length]!='\0')
{
length++;
}
return length;
}
strcat:
//dest ,src 。
//strcat() src dest ;
//dest '\0' , '\0'。
//
// dst ,
char* strcat(char* dst, const char* src)
{
char* ret = dst;
while(*dst != '\0')
++dst;
while((*dst++ = *src) != '\0');
return ret;
}
memcmp:
// buffer1 buffer2 n
int memcmp(const void *buffer1,const void *buffer2,int count)
{
if (!count)
return(0);
while ( --count && *(char *)buffer1 == *(char *)buffer2)
{
buffer1 = (char *)buffer1 + 1;
buffer2 = (char *)buffer2 + 1;
}
return( *((unsigned char *)buffer1) - *((unsigned char *)buffer2) );
}
memcpy:
//memcpy src
// n dest 。
void* my_memcpy(void* dst, const void* src, size_t n)
{
char *tmp = (char*)dst;
char *s_src = (char*)src;
while(n--) {
*tmp++ = *s_src++;
}
return dst;
}
memmove: ,
void* memmove(void* dst, const void* src, size_t n)
{
char* s_dst;
char* s_src;
s_dst = (char*)dst;
s_src = (char*)src;
if(s_dst>s_src && (s_src+n>s_dst)) {
s_dst = s_dst+n-1;
s_src = s_src+n-1;
while(n--) {
*s_dst-- = *s_src--;
}
}else {
while(n--) {
*s_dst++ = *s_src++;
}
}
return dst;
}
memset:
// memset
//
//
void * memset(void *s,int ch,size_t n)
{
int i=0;
while(i