2017-10-09 67 views
0

我對GNU編譯器測試簡單的getchar(之一)功能,但爲什麼沒有得到預期的輸出打印字符串了用C getchar函數

[email protected]:~/c$ ./a.out 
agc 

[email protected]:~/c$ 

代碼如下:

#include <string.h> 
#include "stdio.h" 
#define MAX 80 
int main() 
    { 
     char ch, buffer[MAX+1]; 
     int x=0 ; 
     while ((ch =getchar() != '\n') && x<MAX) 
       buffer[x++]= ch; 
     buffer[x]= '\0'; 

int len = strlen(buffer); 

for (int c=0; c< len; c++) 
     printf("%c" , buffer[c]); 
     return 0; 

} 
+0

在請人看它之前,請格式化您的代碼。 –

+2

這個'(ch = getchar()!='\ n')'應該是'(ch = getchar())!='\ n''。您將比較結果分配給'ch',但您想分配字符。 –

回答

1
while ((ch =getchar() != '\n') && x<MAX) 

應該是

while (((ch = getchar()) != '\n') && x<MAX) 

注意t他多出任務(..)。由於運算符的優先級,ch =getchar() != '\n'相當於ch = (getchar() != '\n')並且評估爲ch = (getchar() != '\n')!==(任務)具有更高的優先級。