【问题标题】:scanning a 2D char Array in C++在 C++ 中扫描二维字符数组
【发布时间】:2016-05-09 10:38:42
【问题描述】:

我正在尝试在我的 C++ 程序中扫描二维字符数组。问题是我的代码没有按预期扫描整个数组。例如,如果我希望它扫描 41*41 数组,那么由于某种原因它停在第 40 行,当我按下回车键时,它会扫描剩余的一行。这是一段简单的代码。

#include <iostream>
char G[101][101];
int N,M;
using namespace std;
int main(int argc, const char * argv[]) {
    cin >> M >> N;
    cout << "m n scanned" << M << N << "\n";
for (int t =0;t<M;t++) {
    for (int j = 0;j<N;j++) {
        cin >> G[t][j];
        cout << "scanned " << t << " " << j << "\n";
    }
}
return 0;
}

编译:testProj $g++ main.cpp -o main

我在这里错过了什么?

编辑输入 41 41

预期输出: 扫描 40 40

实际输出 扫描 39 40
按回车

....

扫描 40 40

【问题讨论】:

  • 您为程序提供了哪些输入,您得到的输出与您期望的结果相比如何?
  • @JoeF 用输入和输出编辑了问题。
  • 你需要给cin一个结束符号,比如空格或者回车。
  • It works for me。上次输入后是否按回车键。 (41 * 41 字符)?
  • @songyuanyao 我该怎么做?

标签: c++ arrays


【解决方案1】:

为我工作。

输入文件,通过管道传送到标准输入上的执行代码:

41 41
*****************************************
*****************************************

[ 39 more rows of the same ]

输出:

m n scanned4141
scanned 0 0
scanned 0 1
scanned 0 2

...

scanned 40 36
scanned 40 37
scanned 40 38
scanned 40 39
scanned 40 40

按原样使用时,显示的代码没有任何问题。

我怀疑您忘记了一点细节,即char 值上的operator&gt;&gt; 将跳过除换行符之外的任何空格,并且您的输入矩阵包含被忽略的空格,并且代码继续查找用于读取 41*41 个非空格字符。因此,此时,您的代码正在等待读取预期数量的未读非空白输入。

【讨论】:

  • 投反对票时,请考虑添加评论?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多