char指针指向的char数组中存储值

时间:2013-09-28 17:03:09

标签: c++ arrays pointers char char-pointer

我有一个字符指针。

char *ch;
char arr[100];

现在我想存储char数组 ch 指向另一个数组 arr 的值。 我想永久存储 ch 指向的值,以便在 ch 上执行的任何其他操作都不会修改数组的原始值。

谁能告诉我怎么做?

3 个答案:

答案 0 :(得分:3)

如果ch包含数据,请复制ch

的内容
memcpy(arr, ch, 100);

警告:此解决方案假定ch引用的内存位置至少为100字节。

如果ch包含字符串,请使用以下命令:

strncpy(arr, ch, 99);
arr[99] =0;

答案 1 :(得分:3)

如果您只想将数组(单个内存块)的内容复制到另一个数组中,可以使用memcpy

memcpy(arr, ch, size);

其中sizech指向的数组的大小(以字节为单位)。

但是因为这是C ++,所以使用诸如std::vector之类的STL容器而不是C风格的数组会更合理〜>而不是复制你将构建和复制对象的内存,例如:

std::vector<char> v(ch, ch + size);

但是既然你提到ch实际上是strtok的返回值,请注意“每次调用strtok()都会返回一个指向包含下一个标记的以null结尾的字符串的指针。“,意思是你可以用它来构造std::string类型的对象:

std::string myStr(ch);

或更好:避免在第一时间使用C风格的strtok。请参阅:Split a string in C++?

答案 2 :(得分:0)

如果您希望ch引用arr但不能修改它,那么您可以

const char* ch;
char* arr;

ch = arr;

这使得仍然可以使用原始数组修改内容,但不能使用指针修改内容。即:

arr[0] = 'g';  // valid operation
ch[0] = 'g';   // compiler error; modifying a const