编写的程序哪里出了问题,应该怎么修改,为什么运行结果不对
正确的运行结果应该是字数5字符数17行数2
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
现在的程序有两个问题导致结果不正确:
-
计算字数的方式有误。按照现在的逻辑,在遇到空格、换行符或制表符时才会将单词计数加1,但实际上应该在遇到这些字符时将单词计数减1,因为后续还会进行一次单词计数的加1操作。所以需要修改if语句的逻辑。
-
计算行数的方式有误。在每次遇到换行符时,将行数计数加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; }
这样修改后,应该可以得到正确的运行结果。
【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7667124
- 你也可以参考下这篇文章:C 编写一个C程序,要求采用模块化设计思想,将相关功能用函数实现,并提供菜单选项,每次程序运行结束后需通过功能0退出程序。该程序具有以下功能:
- 您还可以看一下 黄强老师的30分钟彻底学会C语言指针视频教程课程中的 指针的加减运算小节, 巩固相关知识点
- 除此之外, 这篇博客: C语言中对栈和队列的使用详解中的 出队列的时候也得考虑考虑了,分两种情况,队列里只有一个节点的情况以及多个节点的情况。 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用-
悬赏问题
- ¥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温度场仿真无法模拟微米级激光光斑