2016-07-16 52 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); 
} 
相关问题