2014-01-22 22 views
-2

該程序不斷給我一個意外的第3行令牌錯誤,我不知道爲什麼?該計劃是簡單地閱讀文本文件.....任何幫助,將不勝感激在Linux中的C編程vi

#include <stdio.h> 

int main (int argc, char *argv[]) { 
    int c; 
    FILE *myfile_in, *myfile_out; 

    if (argv != 3) { 
     fprintf(stderr, "\nusage: %s infile outfile\n", *argv) 
    } 

    if ((myfile_in = fopen (*++argv, "r")) == NULL) { 
     fprintf(stderr, "\nmain: cannot open %s\n", *argv); 
    } 

    if ((myfile_out = fopen (*++argv, "w")) == NULL) { 
     fprintf(stderr, "\nmain: cannot open %s\n", *argv); 
    } 

    while ((c = getc(myfile_in)) != EOF) { 
     putc(c, myfile_out); 
     putc(c, stdout); 

     if (c == '\n') { 
      putc(c, myfile_out); 
      putc(c, stdout); 
     } 
    } 

    fclose(myfile_in); 
    fcolse(myfile_out); 

    return 0; 
} 
+0

你複製過去的計劃從PDF?在哪一行你得到錯誤 –

+1

可能要檢查非UNIX類似的字符。嘗試dos2unix首先轉換您的源代碼。 – Trenin

+0

如我的屏幕所示,文件的第一行以空格開頭。你的文件也是如此嗎? – Gabe

回答

4

C代碼必須編譯之前運行。當您嘗試運行上面的源文件時,將其解釋爲shell命令,因此第1行是註釋。第一個非空行是第3行,它對shell沒有意義 - 因此是錯誤。

編譯代碼,將其保存到一個文件中,並myprog.c中運行

gcc -o myprog myprog.c 

然後試試運行它做

./myprog