用VS2010写顺序读写数据文件的c程序,调试不对,请问大神怎么解决?

#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;charch,filename[10];printf("请输入所... # include<stdio.h># include<stdlib.h>int main(){ FILE*fp; char ch,filename[10]; printf("请输入所用的文件名:\n"); scanf("%s",filename); if(fp=fopen(filename,"w")==NULL) { printf("无法打开文件"); exit(0); } ch=getchar(); printf("请输入一个准备储存到磁盘的字符(以#结束)"); ch=getchar(); while(ch!='#') { fputc(ch,fp); putchar(ch); } fclose(fp); putchar(10); return 0;}显示的结果如下图。这个程序取自谭浩强《C程序设计第四版》 展开
 我来答
cincoutvc
2017-09-17 · TA获得超过3899个赞
知道大有可为答主
回答量:2455
采纳率:90%
帮助的人:2645万
展开全部
错误的那一行应该是:if(fp=fopen(filename, "w")==NULL),应该给fp=fopen(filename, "w")加个括号括起来,就是修改成:if((fp=fopen(filename, "w"))==NULL),或者修改成两行代码:fp=fopen(filename, "w"); if(fp==NULL)。理由是关系运算符==的优先级大于赋值运算符,如果不给赋值运算加括号,fp将会被后面的等于比较的关系表达式赋值为一个bool值,而不是文件指针,这样后续写入文件的代码就会出错。我是通过阅读代码目视发现的,准确与否,你还是通过代码调试,看看那一行执行过后fp的值是否正确(就是看fp是否是一个文件指针),验证一下,不过应该就是这个问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式