读书人

帮忙看下一段小程序,该如何处理

发布时间: 2012-05-28 17:59:33 作者: rapoo

帮忙看下一段小程序

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 ;    }
[解决办法]
探讨

C/C++ code
while(!feof(fp))
{
……

读书人网 >C语言

热点推荐