3 回答
TA贡献1801条经验 获得超8个赞
问题是由于留下的'\n'字符(按下 Enter )scanf。
吃掉这些换行符的一种方法是' '先%c放入scanf;
scanf(" %c",&map[i][j]);
^
|
space
另一种方法是使用一个循环中的所有吃起来\n的getchar()
int ch;
while((ch=getchar())!='\n' && ch != EOF );
TA贡献1886条经验 获得超2个赞
您需要跳过之前的尾随换行符 scanf
不要用 fflush(stdin)
采用:
int c;
while((c=getchar())!='\n' && c != EOF ); //eats newline came from scanf
scanf电话结束后
TA贡献1810条经验 获得超4个赞
这是对vuppala srikar的回答。他的问题“ 从文本文件[重复]读取输入时fscanf问题 ”在我看来并不完全相同:
在他的问题中,这scanf是在一个打开的文本文件(fptr)上完成的。
代替 :
while((fscanf(fptr,"%c %d",&c,&val))==2)
{
printf("%c %d\n",c,val);
}
它只读取文件的第一行,我建议:
char line [50] ;
while (fgets( line,sizeof( line ),fptr ))
if (sscanf(line,"%c %d",&c,&val)==2)
{
printf("%c %d\n",c,val);
}
我希望我的回答不会太晚......
- 3 回答
- 0 关注
- 465 浏览
添加回答
举报