strncpy——字符串的復制(復制前n個字符)
///strncpy
///原型:extern char *strncpy(char *dest, char *src, int n);
///功能:把src所指由NULL結束的字符串的前n個字節(jié)復制到dest所指的數(shù)組中,取代dest
/// 中最前面的n個字符。
///說明:如果src的前n個字節(jié)不含NULL字符,則結果不會以NULL字符結束。
/// 如果src的長度小于n個字節(jié),則以NULL填充dest直到復制完n個字節(jié)。
/// src和dest所指內存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
/// 返回指向dest的指針。
有點小問題的代碼:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char *src = "Golden Global View";
char dest1[30] = "Hello, GGV Programmers";
char dest2[20];
strncpy(dest1, src, strlen(src));
strncpy(dest2, src, 9);
cout<<dest1<<endl<<dest2<<endl;
return 0;
}

正確的代碼如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char *src = "Golden Global View";
char dest1[30] = "Hello, GGV Programmers";
char dest2[30] = "";
strncpy(dest1, src, strlen(src));
strncpy(dest2, src, strlen(src));
cout<<dest1<<endl<<dest2<<endl;
return 0;
}

所以說,dest[30]一定不要忘了賦初值。
不然會莫名其妙的出錯。
posted on 2011-11-22 21:28 More study needed. 閱讀(2222) 評論(0) 收藏 舉報
浙公網安備 33010602011771號