嘿,我有一个很长的字符串,并且我试图将其粘贴在固定大小的char数组内。我不在乎字符串是否被切掉,我只希望char数组的每个元素都具有某些内容。

例如

char first_ten_alaphabet[10];
string str = "abcdefghijklnopqrstuvwxyz";


strcpy(first_ten_alaphabet, str.c_str());  //<-- this will cause program to break

任何帮助都很好,谢谢

最佳答案

如果您想复制(并可能截断)C样式的字符串,那么我将使用strncpy而不是“strcpy()”。

strncpy()的一个局限性在于,如果#/字符完全等于复制长度,则该字符串不会以字符串结尾。这是设计使然,但是如果您不期望的话,则可能是“陷阱”。只需添加第二条语句,将NULL字符放在最终位置:

char first_ten_alphabet[10];
string str = "abcdefghijklnopqrstuvwxyz";

strncpy(first_ten_alphabet, str.c_str(), sizeof(first_ten_alphabet));
first_ten_alphabet[sizeof(first_ten_alphabet)-1] = '\0';

10-04 14:44
查看更多