2016-09-29 35 views
1

有人可以解釋我的代碼嗎? d不會總是等於c?我想我真的沒有得到這個getchar()函數。爲什麼d總是等於`c?C getchar()誤解

#include<stdio.h> 

    void test(int c); 

    int main(void) { 
     int c; 
     while ((c = getchar()) != EOF) { 
      test(c); 
     } 
     return 0; 
    } 

    void test(int c) { 
     int d; 
     if (c == '/') { 
      d = getchar(); 
      printf("%c", d); 
     } 
    } 

輸入:

/*

輸出:

*

+0

'void main()'不好.... –

+0

爲什麼?你的意思是int main(void)更好?並且比返回0; ?? –

+0

和它的方式沒有關係。 –

回答

4

沒有,真的沒有。正如C11,章§7.21.7.6所述的getchar功能,(重點煤礦)提到

getchar函數返回從輸入流的下一個字符由 stdin指向。 [...]

因此,每次調用getchar()會給你目前的輸入流中的下一個字符輸入。所以,當c == '/'條件滿足時,它將讀取下一個條目並存儲到d,無論如何它不需要與c相同。

+0

我不知道'getchar()'返回**下一個**字符輸入。感謝您的解釋。現在一切都很清楚。 –