2013-11-04 20 views
1
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) 
{ 

     char p,q; 
     printf("Hello enter char: "); 
     p=getchar(); 
     printf("the char is: %c\n",p); 

     printf("Hello enter char: "); 
     q=getchar(); 
     printf("the char is: %c\n",q); 
    return 0; 
} 

(爲什麼我的輸出是第二個printf和scanf沒有等我輸入一個字符後退出程序?意思是你知道它說:q =的getchar();不應該在退出程序前等待輸入一個字符,但由於某種原因,當它進入到下一行的程序只是退出...如何讀取C中的char值而不用去下一行

+6

爲了什麼'scanf()的'你指的是?而當你「進入」你的性格*和按下的鍵 *鍵盤上,有多少個字符,你認爲你輸入?提示:這不是一個。 – WhozCraig

+0

我在屏幕上看到第一個打印輸出,然後我輸入一個字符,然後按enter ...然後計算機打印出第二個和第三個打印....爲什麼不打印出第二個打印輸出直到我輸入一個字符後按Enter鍵? –

+0

@HardyFeng哦三江源!多數民衆贊成在問題...所以請告訴我如何解決這個問題? –

回答

1

按下輸入時,字符「\ n」是inputing.So你的getchar()使用你進入第二character.I之前想你想下面的代碼:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    char p,q; 
    printf("Hello enter char: "); 
    p=getchar(); 
    printf("the char is: %c\n",p); 

    int c; 
    while((c = getchar()) != '\n' && c != EOF && c != ' ') ; 

    printf("Hello enter char: "); 
    q=getchar(); 
    printf("the char is: %c\n",q); 
    return 0; 
} 
+1

'getchar()'返回'int',如果'c'是'char',那麼'EOF'檢查會遇到一些問題。 –

0

您也可以使用的,而不是getch()getchar()避免按下回車鍵。

#include <stdio.h> 
#include <conio.h> 

int main(void) 
{ 

     char p,q; 
     printf("Hello enter char: "); 
     p=getch(); 
     printf("the char is: %c\n",p); 

     printf("Hello enter char: "); 
     q=getch(); 
     printf("the char is: %c\n",q); 
     return 0; 
} 
0

當遇到無效的用戶輸入,使用的getchar()讀取字符,並在有停留在輸入流中不想要的字符(比如在你的情況下,它是一個新行),我定義常量命名FLUSH其他類似的情況下,

#define FLUSH while(getchar() != '\n') 

解決問題。這個陳述所做的是它讀取一個字符然後將其扔掉。現在,如果你試圖將它放在則GetChars之一後,即

p=getchar(); 
    printf("the char is: %c\n",p); 
    FLUSH; 

它會讀取然後換行停止,因爲while語句中的條件不再成立。

注意:使用getchar()作爲提示會在輸入流中留下'\ n',一旦您發出另一個提示並且沒有根除'\ n',您會發現這種麻煩。

相關問題