天天看点

string.h中的一些函数

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;	
}
           

其它的我后续发博客,太长了不好观看。

继续阅读