scanf问题

时间:2010-12-06 12:38:39

标签: c

  

可能重复:
  Simple C scanf does not work?

为什么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();
}

2 个答案:

答案 0 :(得分:4)

这是因为提供浮动后的换行符(返回键)被视为一个字符。

这不是错误,但是由于“\ n”被认为是C中的一个字符,如果你必须忽略它,你需要手动执行。

对您的案例最简单的解决方案是按照以下方式吃掉换行符:

scanf("%f", &number1);
getchar();

Link会有所帮助。

答案 1 :(得分:2)

scanf从前一行读取缓冲区中留下的空白。要跳过空格,请在scanf中添加一个空格:

scanf(" %c", &letter);

空格表示“跳过空格”,%c表示“读取以下字符。