我目前正在刷新我的C技能并且遇到以下代码时出现问题:
int main (int argc, const char * argv[]) {
@autoreleasepool {
int numberOfTestCases;
scanf("%d", &numberOfTestCases);
char *a[numberOfTestCases];
for (int i = 0; i < numberOfTestCases; i++) {
char input[100];
scanf("%s", input);
a[i] = input;
}
for (int k = 0; k < numberOfTestCases; k++) {
printf("%s\n", a[k]);
}
}
return 0;
}
首先,我想为用户输入一个数字,以确定他/她想要输入多少个字符串。
其次我想让用户输入字符串数并将它们存储在字符串数组中。
最后我想循环遍历该数组并打印出所有值。所以我的测试输入是例如类似的东西:
5
我
名称
是
约翰
Doe的
,预期结果为
我
名称
是
约翰
Doe的
结果是:
Doe的
Doe
Doe
Doe
Doe的
我无法弄清楚如何在数组中插入输入..非常感谢正确方向的提示。
答案 0 :(得分:3)
如果 这是一个C程序,你会得到undefined behavior,因为你有一个指针数组,你所做的每个指针都指向一个变量一个嵌套的作用域,这意味着变量将超出循环范围,而指针(都指向同一个内存)将会导致所谓的未定义行为。