string.h中的一些函數
strlen()
該函數傳回的是字元串的長度,不包含‘\0’。
如果用sizeof的話會算上‘\0’,即會比strlen()大1。
下面是我自己寫的與strlen()達到同樣功能的函數。
我老師講,以後企業的筆試大部分都會讓你寫一個函數原型,即與庫中函數達到同樣功能的函數;
#include<stdio.h>
#include<assert.h>
int mystrlen(char *str)
{
assert(str != NULL);
int i=0;
while(*str++ !='\0')
{
i++;
}
return i;
}
int main()
{
char a[]="hello world";
printf("%d\n",mystrlen(a));
return 0;
}
strcpy()strncpy()
strcpy(str1,str2);将str2複制給str1.
strncpy(str1,str2,n),将str2的前n個字元複制給str1.
注意,strcpy()會把str1是以的内容覆寫掉,而strncpy隻是複制幾個字元覆寫幾個字元。
mystrcpy
#include<stdio.h>
#include<assert.h>
char *mystrcpy(char *dest,const char *src)
{
assert(dest!=NULL && src!=NULL);
char *pdest = dest;
while((*dest++ = *src++) != '\0');
return pdest;
}
mystrncpy
#include<stdio.h>
#include<assert.h>
#include<string.h>
char *mystrncpy(char *dest,const char *src,size_t n)
{
assert(dest!=NULL && src!=NULL);
char *pdest=dest;
while( n-- >0 && (*dest++ = *src++) !='\0');
return pdest;
}
其它的我後續發部落格,太長了不好觀看。