2016-07-16 7 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でアンダースコアを読み取ることはできますか?

1. lhba lh1AAAAAAAAAAAAAAAAAAAAAAAAAAA 
1. lhba lh2BBBBBBBBBBBBBBBBBBBBBBBBBBB 

が読んでいないされ、この出力を取得していたコードを実行する際に

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

が含まれており、 "_"、まだあるようです文字が欠けている。どこで私は間違いをしていますか?

+4

あなたのプログラムには2つの 'getc'があり、そのうちの1つの戻り値に対して' putc'を呼び出すだけです。 –

答えて

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

だから、fを提出するために二回、出力それらの一つだけgetcを使用しています。

代わりにgetcを使用する必要があります。それをint varに格納します。

int c; 
while ((c = getc(r))!=EOF){ 
    putc(c,f); 
} 
関連する問題