用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程序设计第四版》
展开
1个回答
展开全部
错误的那一行应该是: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是否是一个文件指针),验证一下,不过应该就是这个问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询