第8章 复习题
习题8 数值和字符混合输入
-
在使用缓冲输入的系统中,把数值和字符混合输入会遇到什么潜在的问题?
用scanf()输入数值时,会将数值后的换行符‘\n’留在缓冲区,而再用getchar()或者fgetc()输入字符时,会将留在缓冲区的‘\n’读取。所以混合输入时,应当在读取字符之前处理删除留下的换行符。
我的一种代码实现
#include <stdio.h> int main() { int score; char grade; printf("Enter the score.\n"); scanf("%d",&score); printf("Enter the letter grade.\n"); while(getchar() != '\n') //处理数值后可能存在的无效输入 continue; grade=getchar(); printf("%d\n%c\n",score,grade); return 0; }
-
下面这两行代码及其变体在输入验证时也很有用
while(getchar() != '\n')
continue;
如:
while(scanf("%ld",&input) != 1)
{
while((ch = getchar()) != '\n')
putchar(ch); //处理错误输入
printf(" is not an interger.\nPlease enter an"
"integer value, such as 1,-2:");
网友评论