strlen() 和 strcpy()函數的區別,這兩個一個是返回一個C風格字符串的長度,一個是對一個C風格字符串的拷貝,兩個本來功能上是不同的,此外,他們還有一些細小的區別:不包含字符串結尾處的會拷貝str2中的‘\0’。
char *str = "hello";
int length = strlen(str);
char char_array[5];
strcpy(char_array,str);
printf("the new string is:%s\n",char_array);
cout<<"str's length is: "<<length<<endl;
說明字符串數組定義小了,換成大小為6的數組則恢復正常。
在此,建議在使用strcpy的時候,目標數組(第一個參數)的大小應該設置為strlen()函數返回值+1 的值,或者建議使用如下的初始化數組方式:
char char_array[sizeof("hello")];
char * char_array_two = new char[strlen(str) + 1];
參考資料:
http://baike.baidu.com/link?url=QfLOtNdldgq29v53l6wKhyeB7AFxrejppntX3mhL5DHw03heqHLyRGT4Vo1b38YxgQdY8aruLeoT5h6XqLzhka
http://blog.csdn.net/yasi_xi/article/details/9088291