英文小说存于一个文本文件中。
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数和出现的位置(输出行号,或高亮显示);
(3)删除某一子串,并将后面的字符前移。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”;
(3)删除某一字符串后的文章写入文件中。
(4)希望能用C语言按上面要求运行出来
急用,抱拳谢谢!
简易文本编辑系统的设计与实现
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qfl_sdu 2022-06-14 22:20关注
之前写的:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <ctype.h> #define N 200 //查找big中出现smal的次数 void findstr(char* big, char* smal, int pos[], int* nmb) { int i, j, lenb, lens; lenb = strlen(big); lens = strlen(smal); *nmb = 0; if (lens > lenb) return; i = 0; while (i < lenb - lens + 1) { for (j = 0; j < lens; j++) { if (tolower(big[i + j]) != tolower(smal[j])) //不区分大小写,如果区分大小写,则去掉tolower break; } if (j == lens) //说明找到 { pos[*nmb] = i; (*nmb)++; i += lens; } else i++; } } int main() { int row = 0;//文本实际的行数 FILE* fp; //文件指针 char buf[N][100] = { 0 }; //缓存每行文本数据,每行最多100个字节 int nmbZm = 0, nmbSz = 0, nmbSpace = 0, total = 0;//字母数、数字数、空格数、总字符数 int times = 0; //某个单词出现的次数 int pos[N]={0}; //记录单词出现的位置 int pos_nmb = 0; char smal[20] = { 0 };//需要查找的字符串 int i, j, tmp = 0;//临时变量 char hc[100] = { 0 };//临时变量--删除字符串时使用 if (!(fp = fopen("a.txt", "r"))) { printf("文件打开失败\n"); return 0; } printf("开始读文件...\n"); while (!feof(fp)) { memset(buf[row], 0, 100); fgets(buf[row], 100, fp);//逐行读取文件 row++; } fclose(fp); //1.统计英文字母、数字、空格、总文本长度 for (i = 0; i < row; i++) { total += strlen(buf[i]); for (j = 0; j < strlen(buf[i]); j++) { if ((buf[i][j] >= 'a' && buf[i][j] <= 'z') || (buf[i][j] >= 'A' && buf[i][j] <= 'Z')) nmbZm++; else if (buf[i][j] >= '0' && buf[i][j] <= '9') nmbSz++; else if (buf[i][j] == ' ') nmbSpace++; } } printf("字母的个数:%d\n", nmbZm); printf("数字的个数:%d\n", nmbSz); printf("空格的个数:%d\n", nmbSpace); printf("文本总字符数:%d\n", total); //2.查询某个字符出现的次数 printf("请输入要查找的字符串:"); scanf("%s", smal); for (i = 0; i < row; i++) { findstr(buf[i], smal, pos, &tmp); if (tmp) { pos[pos_nmb++] = i + 1;//记录行号 } } printf("%s出现的行号:",smal); for (i = 0; i < pos_nmb; i++) printf("%d ", pos[i]); printf("\n"); //3.删除某个字符串(删除所有行中出现的字符串),并写入文件 if (!(fp = fopen("a.txt", "w"))) { printf("文件打开失败\n"); return 0; } memset(smal, 0, 20); printf("请输入需要删除的字符串:"); scanf("%s", smal); for (i = 0; i < row; i++) { findstr(buf[i], smal, pos, &tmp); tmp--; while (tmp >= 0) { memcpy(buf[i] + pos[tmp], buf[i] + pos[tmp] + strlen(smal), strlen(buf[i]) - strlen(smal) - pos[tmp]); tmp--; buf[i][strlen(buf[i]) - strlen(smal)] = '\0'; } // fputs(buf[i], fp); } fclose(fp); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 r语言神经网络自变量重要性分析
- ¥15 基于双目测规则物体尺寸
- ¥15 wegame打不开英雄联盟
- ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
- ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
- ¥30 eclipse开启服务后,网页无法打开
- ¥30 雷达辐射源信号参考模型
- ¥15 html+css+js如何实现这样子的效果?
- ¥15 STM32单片机自主设计
- ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢