正在加载图片...
} printf("datal.txt文件的内容为:")方 while(feof(fp1)) putchar(fgetc(fpl)); printf"n")方 printf("data2.txt文件的内容为:"): while(feof(fp2)) putchar(fgetc(fp2)); printf("In"), fclose(fpl)方 fclose(fp2方 了提示:如何发现问题? 编译该程序,系统报告四条错误信息。第一条在程序的第11行,即语句 if((fp2=fopen("data2.txt","r"))==NULL) 错误信息如下: error C2679:binary=:no operator defined which takes a right-hand operand of type 'struct iobuf *'(or there is no acceptable conversion) 该出错信息指出语句中的赋值不正确,也就是为变量2赋值不正确。但语句 if((fpl=fopen("datal.txt","r"))==NULL) 的用法与该语句的用法一致,却没有出现报错信息,说明1和p2可能存在类型上的不 同,故重点检查fpl和p2的定义语句,即语句: FILE *fpl,fp2; 发现该语句的变量定义确实存在问题。修改此处的错误后,程序编译通过,但运行结果 不正确,文件中没有任何字符被读出显示。启用单步运行调试程序发现,程序中两条while循 环语句的循环体一次也没有被执行到,未从文件中读出任何字符,也就是说循环条件fopl)、 feof(fp:2)可能出现了错误。分析程序,在读文件时,当文件类型指针没指向文件尾,feof)函 数的值为0,此时循环条件不成立,因此循环体中的读写文件的语句不被执行,因此没有任何 字符输出。按照分析及程序的要求,修改循环条件使程序运行结果正确。 -219-} printf("data1.txt 文件的内容为:"); while(feof(fp1)) putchar(fgetc(fp1)); printf("\n"); printf("data2.txt 文件的内容为:"); while(feof(fp2)) putchar(fgetc(fp2)); printf("\n"); fclose(fp1); fclose(fp2); } 提示:如何发现问题? 编译该程序,系统报告四条错误信息。第一条在程序的第 11 行,即语句 if((fp2=fopen("data2.txt","r"))==NULL) 错误信息如下: error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion) 该出错信息指出语句中的赋值不正确,也就是为变量 fp2 赋值不正确。但语句 if((fp1=fopen("data1.txt","r"))==NULL) 的用法与该语句的用法一致,却没有出现报错信息,说明 fp1 和 fp2 可能存在类型上的不 同,故重点检查 fp1 和 fp2 的定义语句,即语句: FILE *fp1,fp2; 发现该语句的变量定义确实存在问题。修改此处的错误后,程序编译通过,但运行结果 不正确,文件中没有任何字符被读出显示。启用单步运行调试程序发现,程序中两条 while 循 环语句的循环体一次也没有被执行到,未从文件中读出任何字符,也就是说循环条件 feof(fp1)、 feof(fp2)可能出现了错误。分析程序,在读文件时,当文件类型指针没指向文件尾,feof( )函 数的值为 0,此时循环条件不成立,因此循环体中的读写文件的语句不被执行,因此没有任何 字符输出。按照分析及程序的要求,修改循环条件使程序运行结果正确。 - 219 -
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有