好的,我有:
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/