#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { FILE* fp1 = fopen("C:\\Users\\86131\\Desktop\\test.txt", "r"); FILE* fp2 = fopen("C:\\Users\\86131\\Desktop\\test1.txt", "a+"); char ch1 = fgetc(fp1); while (ch1 != EOF) { fputc(ch1, fp2); ch1 = fgetc(fp1); } char ch2 = fgetc(fp2); while (ch2 != EOF) { printf("%c", ch2); ch2 = fgetc(fp2); } fclose(fp1); fclose(fp2); return 0; }这段代码进入了死循环,有什么错误
时间: 2023-06-27 21:03:02 浏览: 331
这段代码进入了死循环的原因是,第一个while循环读取文件时,将文件指针fp1移动到了文件结尾位置,而第二个while循环读取文件时,文件指针fp2仍然指向文件结尾位置,因此会一直读取EOF,导致死循环。
为了解决这个问题,可以在第一个while循环结束后,调用rewind(fp2)函数将文件指针fp2重新指向文件开头,然后再读取文件。修改后的代码如下:
```
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
FILE* fp1 = fopen("C:\\Users\\86131\\Desktop\\test.txt", "r");
FILE* fp2 = fopen("C:\\Users\\86131\\Desktop\\test1.txt", "a+");
char ch1 = fgetc(fp1);
while (ch1 != EOF) {
fputc(ch1, fp2);
ch1 = fgetc(fp1);
}
rewind(fp2); // 将文件指针fp2重新指向文件开头
char ch2 = fgetc(fp2);
while (ch2 != EOF) {
printf("%c", ch2);
ch2 = fgetc(fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
阅读全文