【发布时间】:2016-04-21 15:18:15
【问题描述】:
所以我得到了这件奇怪的事情发生在我身上。 我有一个二维 char 数组,我想将值放入数组中,条件如下:
- 每个单词(字符串)应该在不同的数组中(不同的 行)
- “。”是输入结束的指示符。
这是我的代码:
const int MAX_STRS = 10, MAX_STR_LEN = 8;
int main()
{
char dict[MAX_STRS][MAX_STR_LEN] = { 0 };
getArray(dict);
return EXIT_SUCCESS;
}
void getArray(char array[][MAX_STR_LEN])
{
bool dot = false;
int i, j;
for ( i = 0; i < MAX_STRS && !dot; i++)
for ( j = 0; j < MAX_STR_LEN && !isspace(array[i][j - 1]); j++)
{
array[i][j] = cin.get();
if (array[i][j] == '.')
{
dot = true;
break;
}
}
}
我要阅读的行是:
blabla 挑了好皮特一个哈哈哈的腌吹笛者。
由于某种原因,每次 i=8 时,j 都会自动具有相同的值 (j=8),并跳过这一轮循环。
我们将不胜感激!
【问题讨论】:
-
当
j为零时,您访问array[i][-1]这可不好。 -
是什么让你认为
j是 8? -
@AlanStokes:可能他使用调试器查看它,并且他的编译器将 j 变量保留在 for 循环范围之外的堆栈中,在这种情况下,j 的值将是 8 直到调试器步骤之后在 j 的 for 循环中。
-
太棒了!没注意到,效果很好,谢谢!
-
@RoiAvram:什么效果很好?如果修复不是以下答案之一,请编写您自己的答案(是的,这是允许的)。在任何一种情况下,将其中一个答案标记为已接受(复选框),以便人们知道您的问题已解决。