天天看點

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

其它的我後續發部落格,太長了不好觀看。

繼續閱讀