Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ scanf没有';I don’我不能按预期接受chars_C++ - Fatal编程技术网

C++ scanf没有';I don’我不能按预期接受chars

C++ scanf没有';I don’我不能按预期接受chars,c++,C++,使用以下代码: #include <cstdio> using namespace std; char matrix[101][101]; int row, col, case_num = 1; int main() { while (scanf("%d %d", &row, &col) && row!=0 && col!=0) { for (int i=0; i<row; i++){

使用以下代码:

#include <cstdio>

using namespace std;

char matrix[101][101];
int row, col, case_num = 1;
int main() {
    while (scanf("%d %d", &row, &col) && row!=0 && col!=0) {
        for (int i=0; i<row; i++){
            for (int j=0; j<col; j++){
                scanf("%c", &matrix[i][j]);
            }
        }

        for (int i=0; i<row; i++){
            for (int j=0; j<col; j++){
                printf("%c", matrix[i][j]);
            }
        }
    }
    return 0;
}
我期望得到以下结果:

*........*......
它是除空白外的原始输入。 但实际产出是:

*...
....
.*..

有什么问题吗?

scanf
%c
一起使用不使用前导空格。因此,当您键入时:

*...
按回车键,实际上是五个字符。这意味着
matrixa[1][0]
最终会保留
\n
字符。然后,当你去输出你的矩阵时,它显示为一个换行符出现在输出中


要解决所有这些问题,请将格式字符串更改为
“%c”
,这意味着放弃前导空格。(这也将解决从
%d%d
的输入中删除尾随换行符的问题)。

C中没有
标题;你问的是C++问题。不要双重标记。我认为这是一个
c
问题,而不是
c++
,更具体地说,这是一种
c99
风格。我只是编辑了这个问题,将
替换为
,应该足够了。@armnotstrong请阅读。标签应该与原海报实际使用的编译器相符合,而不是你认为他应该使用的是什么。@ MtMcNababb,不,我认为这是C问题而不是C++问题,因为在这个问题上不需要C++特性。@ ARMNOSTRANK读链接线程,很多人都贡献了。重要的不仅仅是你的个人意见
*...