使用strncpy将字符串复制到二维char数组

时间:2015-12-09 22:35:14

标签: c++ arrays string

我有一个变量,即字符串temp;

temp的值是一些字符串,它处于一个循环中,值不断变化。

我需要使用变量:

备份temp变量中的字符串
char asset[8][256]  

我尝试使用:

strncpy(&asset[8][256], temp.c_str(), 256)

但它仍然无法奏效。我做错了什么?

1 个答案:

答案 0 :(得分:0)

你说你写了一个循环,但是如果你每次写入同一个(非法的)地址,你应该如何使用这段代码?

循环应该如下所示:

for (int i = 0; i < 8; ++i)
{
    //...
    strcpy(&asset[i][0], temp.c_str(), 256);
    //...
}

您要写信至&asset[0][0]&asset[1][0]&asset[2][0]等。写入&asset[8][256]开始在该位置[8][256]写入字符串,超出范围。

其次,如果你想要&#34;备份&#34;字符串,你为什么使用数组?为什么不是std::vector<std::string>而只是push_back要备份的值?

#include <vector>
//...
std::vector<std::string> asset;
std::string temp;
//...
asset.push_back(temp);  // backs up temp.

这不仅更容易,您不限于8个字符串,并且不存在缓冲区溢出的可能性。