1,字符串库函数尽量用带n的;比如说用strncpy,而不要用strcpy;
2,字符串拷贝宁可截断也不要越界,所以在拷贝的时候一定要对源字符串长度进行判断,从而确认是否能够拷贝到目的字符串;
char* my_strcpy(char* strDest,char *strSrc)
{
strncpy(strDest,strSrc,strlen(strSrc));
return strDest;
}
在上面代码中我们可以看出虽然用了strncpy,字符串拷贝还是会越界,所以我们要遵从上面的2的方法,代码改进如下:
char* my_strcpy(char* strDest,char *strSrc)
{
unsigned int len = strlen(strSrc);
strncpy(strDest,strSrc,len -1);
*(strDest + len) = '\0';
return strDest;
}
3,用snprintf代替sprintf
#include<stdio.h>
#define STR_LENGTH 10
char* test_string(char* str,int a)
{
if(str == NULL)
{
return NULL;
}
snprintf(str,STR_LENGTH,"a = %d",a);
//sprintf(str,"a = %d",a);
return str;
}
int main()
{
int b = 10;
char str1[STR_LENGTH];
test_string(str1,STR_LENGTH);
printf("%s\n",str1);
return 0;
}
上面代码我们看出指针的用法: