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;
}
其它的我后续发博客,太长了不好观看。