我有如下代码扫描矩阵,w - 矩阵的宽度,矩阵的h - 高度.
我正在使用Visual Studio 2010.
每次我得到一个char它会使j增加2(我把断点加上来了解这种行为).
int w = 0, h = 0;
char map[21][21];
int i,j;
scanf("%d%d", &w, &h);
for(i = 1; i <= h; ++i){
for(j = 1; j <= w; ++j){
//fflush(stdin);
scanf("%c",&map[i][j]);
//fflush(stdin);
}
}
Run Code Online (Sandbox Code Playgroud)
这背后的原因是什么?
在扫描时我给出值,w = 7,h = 5.
我的代码中没有看到任何错误....请帮助我.
问题是由于留下的'\n'字符(按下 Enter )scanf.
吃掉这些换行符的一种方法是' '先%c放入scanf;
scanf(" %c",&map[i][j]);
^
|
space
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用一个循环中的所有吃起来\n的getchar()
int ch;
while((ch=getchar())!='\n' && ch != EOF );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |