为什么scanf("%c", &letter);
无效。其余的都在工作
#include <stdio.h>
main(){
int number;
float number1;
char letter;
char letter2 [5];
printf("Enter an int: ");
scanf("%d", &number);
printf("Enter a float: ");
scanf("%f", &number1);
printf("Enter a letter: ");
scanf("%c", &letter);
printf("Enter a string: ");
scanf("%s", letter2);
printf("INT = %d\n", number);
printf("FLOAT = %f\n", number1);
printf("LETTER = %c\n", letter);
printf("LETTER2= %s\n", letter2);
getch();
}
答案 0 :(得分:4)
这是因为提供浮动后的换行符(返回键)被视为一个字符。
这不是错误,但是由于“\ n”被认为是C中的一个字符,如果你必须忽略它,你需要手动执行。
对您的案例最简单的解决方案是按照以下方式吃掉换行符:
scanf("%f", &number1);
getchar();
这Link会有所帮助。
答案 1 :(得分:2)
scanf
从前一行读取缓冲区中留下的空白。要跳过空格,请在scanf中添加一个空格:
scanf(" %c", &letter);
空格表示“跳过空格”,%c表示“读取以下字符。