2015-07-19 128 views
2

嘿,我有一个很长的字符串,我试图将它固定在一个固定大小的char数组中。我不在乎,如果字符串被砍掉,我只是想要char数组的每个元素有东西。C++如何将大字符串放入固定char数组中

例如

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


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

任何帮助将是不错的感谢

+2

也许'strncpy()函数(first_ten_alaphabet,10);'?或者,最好添加'first_ten_alphabet [9] ='\ 0';'。 – FoggyDay

+2

@FoggyDay'strncpy'是不安全的,因为它不能保证目的地是空终止的。 –

回答

3

如果你想复制(也可能截断)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'; 
+1

谢谢,这是做的伎俩 – conterio

相关问题