帮忙看下一段小程序
- C/C++ code
#include <stdio.h>main(){ FILE *fp; char c, str[256]; int i=0, no=0, line=0; if((fp=fopen("text.txt","w"))==NULL) // { printf("can`t open this file.\n"); exit(0); } printf("please input a string.\n"); while((c=getchar())!=EOF) { if(c>='a'&&c<='z') c-=32; // fputc(c, fp); // } fclose(fp); if((fp=fopen("text.txt", "r"))==NULL) { printf("can`t open this file.\n"); exit(0); } while(!feof(fp)) { c=fgetc(fp); // no++; if(c=='\n') line++; // } printf("line=%d character_no=%d\n", line, no); fclose(fp);}
从键盘输入字符,直到输入EOF(Ctrl+Z)为止。对于输入的小写字符,先转换为相应的大写字符,其他字符不变,然后逐个输出到文件text.txt中,行结束符回车('\n')也作为一个字符对待,最后统计文件中的字符个数和行数。
其他功能都没问题,但是在no变量的输出上有问题,总是比输入的字符多,我感觉是Ctrl+Z的原因,怎么解决,只允许在打注释的地方改。
[解决办法]
0D 0A
- C/C++ code
if((fp=fopen("text.txt","wb"))==NULL) //\r\n 处理 { printf("can`t open this file.\n"); return ; }
[解决办法]