如何解决C-从文件读取
我正在尝试编写一个程序,其中在按下键盘上的“ v”按钮后,它将打开一个文件以供读取,在按下“ k”后,它将关闭该文件并结束该程序。
(程序中将有更多功能,这些功能将单独使用打开的文件,因此需要保持打开状态[我知道这是设计程序的一种愚蠢的方式,但这是遵循这些规则的作业])。
但是,如果我想用打开的同一功能main
关闭该程序,而不是在同一位置关闭该程序,则会给我一个错误消息fclose(fr)-fr is not unidentified
谁能帮我吗?
这是我的代码:
int main()
{
char c;
while(1){
scanf("%c",&c);
if(c == 'v'){
FILE *fr;
fr = fopen("D:\\Programming\\C\\Projekt\\Projekt 1\\pacienti.txt","r");
v();
}
else if(c == 'k'){
fclose(fr);
return 0;
}
}
}
解决方法
(fclose(fr)-fr不是未知的
您的代码无法编译,因为
fclose(fr);
使用未知变量 fr
要关闭先前打开的文件,您需要将FILE *fr;
移到while
循环之前,以使其可以在if
的两个分支中使用。
我还建议您使用 NULL 初始化该变量,以避免在输入 v 之前使用输入 k 的未定义行为。一种正确的方法是在调用fclose
并在关闭文件后将其设置为 NULL 之前测试它是否不是 NULL 。
无论如何 fr 只在 mail 内部,打开文件似乎没用, v 函数在做什么?
很可能您想要替换
scanf("%c",&c);
作者
scanf(" %c",&c);
绕过包括换行符的空格,或者最好也检查scanf
返回1以管理EOF情况,例如,如果stdin
重定向到文件。
请注意,如果输入了连续的 v 而没有 k ,则会多次打开文件而不关闭文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。