2010-12-06 69 views
4

可能重复:
Simple C scanf does not work?问题与scanf函数

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

似乎是正确的什么结果有你得到了吗? – 2010-12-06 12:41:23

+0

scanf(“%c”,&letter)is not workinG – sample 2010-12-06 12:42:36

+0

你是什么意思不工作?程序崩溃了吗?或者信件的pritf结果不是理想的?那么结果是什么? – 2010-12-06 12:43:28

回答

4

这是因为换行后的换行符(返回键)被计为一个字符。

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

对于你的情况,最简单的解决方案如下吃起来换行符:

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

Link会有所帮助。

2

scanf读取上一行中留在缓冲区中的空白。要跳过空格,加一个空格scanf函数:。

scanf(" %c", &letter); 

空间的意思是“跳过空白”和在%C的意思是“阅读下面的文字