2010-12-06 68 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的意思是「閱讀下面的文字