printf("Number of tracks: ");
fflush( stdin );
scanf("%d", &track);
printf("Is this an album or single: ");
fflush( stdin );
scanf("%c", &type);
当我输入5以获取曲目数时,程序显示是专辑或单曲,并且在那里结束程序而不让我输入专辑类型?
点1
不使用 fflush( stdin );
,它是未定义的行为。
相关:来自C11
标准DocMunet,第7.21.5.2章,(强调我的)
int fflush(FILE *stream);
如果
stream
指向输出流或最新操作的更新流,则FFLUSH函数会导致将该流传递到主机环境的任何不成文数据,以写入文件;否则,行为是未定义的。
点2
(要完成工作, fflush(stdin)
))
更改
scanf("%c", &type);
to
scanf(" %c", &type);
^
|
领先的空格忽略了缓冲区中的类似空格的字符,并读取stdin
的第一个非Whitespace字符。