使用以下代码:
#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;
}
当我输入这些字符时:
4 4
*...
....
.*..
....
0 0
我期望得到以下输出:
*........*......
它是除了空格之外的原始输入。但实际输出是:
*...
....
.*..
有什么问题吗?
发布于 2015-01-20 03:45:31
带有%c
的scanf
不使用而不是来消耗前导空格。所以当你输入的时候:
*...
然后按Enter,这实际上是五个字符。这意味着matrixa[1][0]
最终会保留\n
字符。然后,当你去输出你的矩阵时,这会在输出中显示为一个换行符。
要解决所有这些问题,请将格式字符串更改为" %c"
,这意味着放弃前导空格。(这也将解决从%d %d
的输入中获取尾随换行符的问题)。
https://stackoverflow.com/questions/28037369
复制相似问题