c++ - for 循环跳过一轮将值读取到 C++ 中的 char 数组

标签 c++ arrays for-loop char

所以我遇到了一件发生在我身上的奇怪事情。 我有一个二维 char 数组,我想在满足以下条件的情况下将值放入数组中:

  1. 每个单词(字符串)应该在不同的数组中(不同的 线)
  2. >“。”是输入结束的指示符。

这是我的代码:

 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/

相关文章:

c++ - Doxygen - 将参数声明为可选

javascript - Ramda : How to minimize computing resources by currying, 过滤和映射?

java - 如何在java中使用for循环动态创建二维数组?

python - for 循环计数器,报告 1

Java: token "}"上存在语法错误?

c++ - 将字符数组转换为整数值

c++ - 对 "av_new_packet"的 undefined reference (使用 Qt)

通过指针的c++函数调用可以访问隐藏的基类成员函数吗?

c - struct 中的结构数组

javascript - 遍历嵌套的 json 数组以创建新数组