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

Copy string to two dimensional char array using strncpy

本文关键字:二维 字符 数组 strncpy 字符串 复制 使用      更新时间:2023-10-16

我有一个变量,字符串temp

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

我需要使用变量备份temp变量中的字符串

char asset[8][256]  

我尝试使用:

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

但它仍然不起作用。我做错了什么?

你说你写了一个循环,但如果你每次都写同一个(顺便说一句,这是非法的)地址,你应该怎么写这行代码?

循环应该看起来像这样:

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]的字符串,这是越界的。

其次,如果您想要字符串的"备份",为什么要使用数组?为什么不备份一个std::vector<std::string>而只备份push_back的值呢?

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

这不仅容易得多,而且不限于8个字符串,而且没有缓冲区溢出的机会。