[英]Why are there extra spaces in the file after copying text from one file to another in C?
char c, cp;
FILE *input_file, *output_file;
input_file = fopen("d:\\input.txt","r");
output_file = fopen("d:\\output.txt", "w");
if(input_file==NULL){
printf("cannot open the input.txt file.");
exit(0);
}
if(output_file == NULL){
printf("cannot open the output.txt file.");
exit(0);
}
cp = fgetc(input_file);
while(cp!=EOF){
fputc(cp,output_file);
cp=fgetc(input_file);
}
c = fgetc(output_file);
while(c!=EOF){
printf("%c",c);
c=fgetc(output_file);
}
fclose(input_file);
fclose(output_file);
getch();
这是我在复制文本文件时使用的代码。 在 input.txt 文件中,我写了“你好,你好吗”。
执行代码后,文本“你好,你好吗”被复制到 output.txt 文件中,但复制的文本后有一百多个空格。 在程序下面的代码不起作用之后:
cp = fgetc(input_file);
while(cp!=EOF){
fputc(cp,output_file);
cp=fgetc(input_file);
}
上面代码下面的代码不起作用。 怎么了? 请详细说明。 我是 C 的初学者。
您必须将c
和cp
定义为int
而不是 char。 EOF
被定义为一个整数值,它可以与任何字符区分开来,例如可以由fgetc()
读取,它返回无符号字符范围或 EOF 中的值,不一定是字符范围内的值。 (归功于@chux)。
因此while( cp != EOF )
如果cp
是字符,则可能不会变为真。
对于第二个问题:如果你想阅读你写的东西,你必须
rewind(output_file)
或fseek(output_file, 0, SEEK_SET)
。您必须关闭输出文件以提交更改并能够再次读取:
cp = fgetc(input_file);
while(cp!=EOF){
fputc(cp,output_file);
cp=fgetc(input_file);
}
fclose(output_file);
// .....
c = fgetc(output_file);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.