2301_80484154 2023-11-14 16:55 采纳率: 80%
浏览 22
已结题

C语言统计字数字符数和行数

编写的程序哪里出了问题,应该怎么修改,为什么运行结果不对
正确的运行结果应该是字数5字符数17行数2

img

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-14 18:50
    关注

    【以下回答由 GPT 生成】

    现在的程序有两个问题导致结果不正确:

    1. 计算字数的方式有误。按照现在的逻辑,在遇到空格、换行符或制表符时才会将单词计数加1,但实际上应该在遇到这些字符时将单词计数减1,因为后续还会进行一次单词计数的加1操作。所以需要修改if语句的逻辑。

    2. 计算行数的方式有误。在每次遇到换行符时,将行数计数加1是正确的,但现在的程序没有考虑文件最后一行没有换行符的情况。

    以下是修改后的代码:

    #include <stdio.h>
    
    int main() {
        FILE *fp;
        char ch;
        int wordCount = 0;
        int charCount = 0;
        int lineCount = 0;
    
        fp = fopen("myfile.txt", "r");
        if (fp == NULL) {
            printf("无法打开文件\n");
            return 0;
        }
    
        // 使用一个flag标志当前是否处于单词中,默认为0,表示未进入单词
        int isInWord = 0;
    
        while ((ch = fgetc(fp)) != EOF) {
            charCount++;
    
            if (ch == ' ' || ch == '\n' || ch == '\t') {
                // 如果当前处于单词内部,则将单词计数加1,并将isInWord置为0
                if (isInWord) {
                    wordCount++;
                    isInWord = 0;
                }
            } else {
                // 如果当前处于单词外部,则将isInWord置为1
                if (!isInWord) {
                    isInWord = 1;
                }
            }
    
            if (ch == '\n') {
                lineCount++;
            }
        }
    
        // 如果文件最后一行没有换行符,则将行数计数加1
        if (charCount > 0) {
            lineCount++;
        }
    
        fclose(fp);
    
        printf("字数:%d\n", wordCount);
        printf("字符数:%d\n", charCount);
        printf("行数:%d\n", lineCount);
    
        return 0;
    }
    

    这样修改后,应该可以得到正确的运行结果。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月14日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑