2016-07-16 53 views
-2
int i; 
FILE *r=fopen("sample.txt","r"); 
for (i=0;i<1;i++){ 
    char filename[30]; 
    sprintf(filename,"%d",i); 
    FILE *f=fopen(filename,"w"); 
    while (getc(r)!=EOF){ 
     putc(getc(r),f); 
    } 
    fclose(f); 
} 

的sample.txt的文件包含getc可以從文件中讀取下劃線嗎?

>12.1 blah blah blah_1 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
>13.1 blah blah blah_2 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 

在運行代碼我得到這個輸出

1. lhba lh1AAAAAAAAAAAAAAAAAAAAAAAAAAA 
1. lhba lh2BBBBBBBBBBBBBBBBBBBBBBBBBBB 

而且它不讀書 「>」 和 「_」,似乎仍有缺少字符。我在哪裏犯錯誤?

+4

你的程序中有兩個'getc',而你只對其中一個的返回值調用'putc'。 –

回答

4
while (getc(r)!=EOF){ 
    putc(getc(r),f); 
} 

讓你在使用getc兩次和輸出只有一個到文件f

相反,您應該只使用一個getc。將它存儲在一個int變量中。

int c; 
while ((c = getc(r))!=EOF){ 
    putc(c,f); 
} 
相關問題