2011-10-13 58 views
0

我想在C編寫一個簡單的'貓'克隆我運行Windows 7並使用MinGW編譯器。但是,每當我運行該程序時,它都會返回文本文件,但每個字符均由'☺'字符替換。先謝謝你。如何讓getc()返回除笑臉之外的人物?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    int i; 
    FILE *fp; 
    int c; 

    for(i = 1; i < argc; i++) 
    { 
     fp = fopen(argv[i], "r"); 

     if(fp == NULL) 
     { 
      fprintf(stderr, "cat: can't open %s\n", argv[i]); 
      continue; 
     } 

     while((c = getc(fp) != EOF)) 
     { 
      putchar(c); 
     } 

     fclose(fp); 
    } 

    return 0; 
} 

回答

6

由於關係平等的測試(!=)比分配(=)更大的優先權你只是在C存儲1在每次迭代。否則,其中一個括號是在錯誤的地方。

while((c = getc(fp) != EOF)) 
         ^
{ 
     putchar(c); 
} 

右:

while((c = getc(fp)) != EOF) 
{ 
     putchar(c); 
} 
+0

感謝一大堆。你的解釋確實幫了很多忙。 :) – pstap92