所以我遇到了一件发生在我身上的奇怪事情。 我有一个二维 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 picked nice PeTer a hahaha of pickled Piper .
出于某种原因,每次 i=8 时,j 自动具有相同的值 (j=8) 并且它会跳过这一轮循环。
帮助将不胜感激!
最佳答案
问题是当j=0时,我让他检查array[-1]是否有空格。
这里是固定代码:
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 ; j++)
{
array[i][j] = cin.get();
if (array[i][j] == '.')
{
dot = true;
break;
}
if( isspace(array[i][j]))
break;
}
}
感谢 Alan Stokes 提醒我注意这一点!
关于c++ - for 循环跳过一轮将值读取到 C++ 中的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821076/