|
发表于 2023-4-9 17:32:37
|
显示全部楼层
从您提供的代码来看,您的问题是在循环中使用了未初始化的变量ch。
这是因为您在while循环中使用了未初始化的ch值进行比较。
为了解决这个问题,您可以在循环中进行初始化和更新ch的值。这里是修改后的代码:
- #pragma warning(disable:4996) //函数弃用可用此代码
- #include <stdio.h>
- #include <stdlib.h>
- int main(void)
- {
- FILE *fp;
- char ch, filename[20];
- printf("请输入文件地址 :");
- scanf_s("%s", filename, 20);
- if (!(fp = fopen(filename, "r")))
- {
- printf("打开文件错误\n");
- exit(0); //结束程序
- }
- ch = fgetc(fp); //在循环之前初始化ch
- while (ch != EOF)
- {
- putchar(ch);
- ch = fgetc(fp); //在循环中更新ch的值
- }
- fclose(fp);
- }
复制代码
这个修改将在进入循环之前初始化ch的值,并在循环内不断更新ch的值。这样,当文件读取到末尾时,ch将被赋值为EOF,从而跳出循环。 |
|