c++ - char* 数组的问题

标签 c++ arrays pointers char

好的,我有:

char* arr[5];

我有

char input[10];

然后:

int i = 0;
cin.getline(input, 10);
while(input[0] != 'z')
{
    arr[i] = input;
    cin.getline(input, 10);
    i++;
}

结果是 arr 中的每个元素都是相同的,因为它们都是指向输入的指针,但我希望每个元素都指向输入变量在给定时间保存的 char 数组。

这带来的结果:

arr[0] = line beginning in 'z' (because that is what input currently is holding)
arr[1] = line beginning in 'z'
arr[2] = ... and so on

我想要的结果:

arr[0] = first line read in
arr[1] = second line read in
arr[2] = third line read in and so on...

我对如何让元素全部指向新值而不是全部指向同一个值感到困惑。

最佳答案

如果你想输入5次,你可以试试这个代码段

int i = 0;
while(i<5)
{
    arr[i] = input;
    cin.getline(input, 10);
    i++;
}

这应该有效,您可以获得您上面所说的“期望的结果”。

编辑: 如评论中所述,这将不起作用。请参阅此处的示例:http://ideone.com/hUQGa7

所需要的是占用arr 中每个元素的不同指针值。在给出的其他答案中讨论了如何实现这些不同的指针值。

关于c++ - char* 数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836090/

相关文章:

C 将 char** 指向另一个起始位置?

c++ - 传递显式空参数包

java - 即使值/顺序相同,原始列表似乎也不匹配?是否可以?

c - 在c中动态增加数组(int *)的大小

arrays - Delphi 中二维数组的索引运算符属性

c - 从 char 数组中提取第二个和第三个值并将其转换为短(2 字节)。在 C 中

c - VLA 和通过 malloc 进行动态内存分配有什么区别?

c++ - 为什么我的模数计算给我盒子?

c++ - 如何调试 ActiveX 控件 (OCX) 或使其记录错误?

c++ - 在 std::cout 中递增变量时指针不显示更新值