2017-09-19 69 views
1

我想從終端寫入文件中的內容。文件正在創建但內容未寫入文件。c中的這個文件處理代碼有什麼問題?

#include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    int main(int argc, char *argv[]) 
    { 
     FILE *fp; 
     fp=fopen(argv[1],"w"); 
     char ch; 
     while((ch=getchar())!=EOF) 
     { 
      putc(ch,fp); 
     } 
     fclose(fp); 
     return 0; 
    } 
+1

旁註:要經常檢查的I/O函數的返回值,包括'fopen'和'putc'。 – user694733

+2

你如何指示EOF? – user694733

+0

如果在調用putc()之前顯示正在讀取的字符,會發生什麼情況? –

回答

5

如果沒有信號EOF(按Ctrl + Z在Windows和按Ctrl + d在Linux中),則循環將繼續執行,直到接收到信號。

如果您嘗試在程序仍在執行時用自己的眼睛閱讀文件,則文件流將不會關閉(fclose(fp);將不會執行),因此文件將顯示爲空白,即使當文件流關閉時,內容將顯示給您。

1

下正常工作:

#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp=fopen(argv[1],"w"); 
    char ch; 
    while(1) 
    { 
     ch = (char)getchar(); 
     putc(ch,fp); 
     if(ch == '.') break; 
    } 
    fclose(fp); 
    return 0; 
}