3 回答

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊
問題是由于留下的'\n'字符(按下 Enter )scanf。
吃掉這些換行符的一種方法是' '先%c放入scanf;
scanf(" %c",&map[i][j]);
^
|
space
另一種方法是使用一個循環(huán)中的所有吃起來\n的getchar()
int ch;
while((ch=getchar())!='\n' && ch != EOF );

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
您需要跳過之前的尾隨換行符 scanf
不要用 fflush(stdin)
采用:
int c;
while((c=getchar())!='\n' && c != EOF ); //eats newline came from scanf
scanf電話結(jié)束后

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊
這是對vuppala srikar的回答。他的問題“ 從文本文件[重復(fù)]讀取輸入時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 關(guān)注
- 490 瀏覽
添加回答
舉報