GCC校友交作业记得改一下我还没交!!!

Visual Studio编译环境

一、实验目的

1.理解模块化设计思想,熟悉流程图的使用;

2.掌握字符串的基础操作:

  1. 字符串显示输出;
  2. 查找指定字符;
  3. 插入字符;
  4. 删除指定字符;
  5. 替换字符;
  6. 串拼接
  7. 求子串
  8. 模式匹配BF算法。

二、实验内容

1.分析系统功能,根据功能模块图选择2个模块画出流程图;

2.设计系统主界面,要求选择菜单对应数字进入相应功能:

3.定义一个字符串数组,使其具有如下功能:

(1) 读取文档,输出字符串;

(2) 查找某个字符在字符串中出现的字数以及位置;

(3) 在字符串的指定位置插入一个字符;

(4) 删除字符串中的某个字符;

(5) 将字符串中的某个字符替换成指定字符,如把所有的字符a替换成c。

(6) 字符串拼接,定义三个字符串T,S1,S2,将S1,S2复制到T中,注意:先放入S1,后放入S2.

(7) 求字符串字串,用Sub返回串S的第pos个字符起长度为len的字串。

(8) 找字串T第一次出现在主串S中的位置并返回。


Dec C++和VS编译器创建项目都要创建C++项目:
VS:
VS2019如何创建C++项目?_Gemini-zero的博客-CSDN博客_vs2019怎么创建c++项目打开VS2019,选择空项目后,点击下一步(如果没有找到空项目,说明你下载的时候没勾选C++模块)输入项目名,更改项目存放路径后,选择下一步选择C++文件,修改程序名称,点击添加找到“解决方案资源管理器”,右键点击源文件,选择添加新建项此时可以开始编写C++程序了…https://blog.csdn.net/qq_44364832/article/details/105820626

Dec c++:
https://jingyan.baidu.com/article/fd8044fae80db55031137a07.htmlhttps://jingyan.baidu.com/article/fd8044fae80db55031137a07.html


这是我的vs框架


创建头文件 struct.h 定义数据类型和存储结构

#pragma once#ifndef __STRUCT_H__#define __STRUCT_H__#define MAXLEN 255#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef struct {char ch[MAXLEN + 1];int length;}SString;#endif

创建 function_declare.h 头文件把所有的方法函数声明

#pragma once#ifndef __FUNCTION_H__#define __FUNCTION_H__//从txt文件读取内容到串中Status read_string(SString* S);//字符串显示void ShowString(SString S);//查找指定字符void FindString(SString S);//插入字符void InsertString(SString& S);//删除指定字符void DeleteString(SString& S);//替换字符void ReplaceString(SString& S);//串拼接void TogetherString(SString& S);//求子串void FindSonString(SString S);//模式匹配BF算法void MatchedBFAlgorithm(SString S);//修改txtStatus updata_book(SString* S);#endif

创建 file_operation.cpp 源文件读取本程序文件夹目录中名为data2.txt的txt文本文件

#include#include#include"struct.h"//从txt文件读取内容到串中Status read_string(SString* S) {int i = 1;FILE* fp;if ((fp=fopen("data2.txt","r")) == NULL) {puts("打开文件失败\a\n");return ERROR;}if (fgets(S->ch, MAXLEN, fp) != NULL) {S->length = strlen(S->ch);}fclose(fp);return OK;}//修改txtStatus updata_book(SString *S) {int i = 0;int len = S->length;FILE* fp;if ((fp = fopen("data2.txt", "w+")) == NULL) {puts("打开文件失败\a\n");return ERROR;}rewind(fp);while (len) {fprintf(fp, "%c", S->ch[i]);len--;i++;}fclose(fp);printf("txt文件修改成功\n");}

创建 stringoperation.cpp源文件编写系统的功能

#include #include#include #include "struct.h"//1字符串显示void ShowString(SString S) {int i;printf("字符串显示:");for (i = 0; i < S.length; i++) {printf("%c", S.ch[i]);}printf("\n");}//2查找指定字符void FindString(SString S) {char c;int j = 0;int num=0;bool h = false;int location[MAXLEN+1];printf("要查找的字符:");getchar();scanf("%c", &c);for (int i = 0; i < S.length; i++) {if (c == S.ch[i]) {location[j] = i;h = true;num++;j++;}}if (h) {printf("字符 %c 在字符串中出现在位置", c);for (int i = 0; i  S.length) {printf("位置输入有误\n\a");return;}for (; (len-1) != (location-2); len--) {S.ch[len]=S.ch[len-1];}S.ch[location-1]=c;S.length++;printf("插入成功\n");ShowString(S);}//4删除指定字符(所有字符)void DeleteString(SString& S) {char c;int j;bool h = false;printf("删除的字符:");getchar();scanf("%c", &c);for (int i = 0; i < S.length; i++) {if (S.ch[i] == c) {h = true;j = i;for (; j < S.length; j++) {S.ch[j] = S.ch[j + 1];}i--;S.length--;}}if (h) {printf("删除成功\n");ShowString(S);}else {printf("字符串中没有该字符\a\n");}}//5替换字符(所有字符)void ReplaceString(SString& S) {char oldc;char newc;int j;bool h = false;printf("替换掉的字符:");getchar();scanf("%c", &oldc);printf("替换成的字符:");getchar();scanf("%c", &newc);for (int i = 0; i  MAXLEN + 1) {printf("拼接失败,字符串过长\n\a");return;}T[i] = '\0';i = 0;printf("载体T拼接成功:");while (T[i] != '\0') {printf("%c", T[i]);i++;}printf("\n");}//7求子串void FindSonString(SString S) {char Sub[MAXLEN + 1];int len, pos,i=0;printf("输入提取的起始位pos:");scanf("%d",&pos);printf("想要获取的长度:");scanf("%d", &len);int lastLocation=pos - 1 + len;for (; pos <= lastLocation; pos++) {Sub[i]=S.ch[pos-1];i++;Sub[i] = '\0';}printf("子串:");i = 0;while (Sub[i] != '\0') {printf("%c", Sub[i]);i++;}printf("\n");}//8模式匹配BF算法void MatchedBFAlgorithm(SString S) {char T[MAXLEN + 1];int start;printf("输入子串:");scanf("%s", T);int sonLen = 0,fatherLen=0;while ((sonLen != strlen(T)) && (fatherLen != S.length)) {if (S.ch[fatherLen] == T[sonLen]) {fatherLen++;sonLen++;}else {sonLen = 0;fatherLen++;}}if (sonLen == strlen(T)) {start=fatherLen - sonLen;printf("该子串的起始位置为:%d\n", start+1);}else {printf("没有该子串\n\a");}}//(1) 读取文档,输出字符串;y//(2) 查找某个字符在字符串中出现的字数以及位置;y//(3) 在字符串的指定位置插入一个字符;y//(4) 删除字符串中的某个字符;y//(5) 将字符串中的某个字符替换成指定字符,如把所有的字符a替换成c。y//(6) 字符串拼接,定义三个字符串T, S1, S2,将S1, S2复制到T中,注意:先放入S1,后放入S2.//(7) 求字符串子串,用Sub返回串S的第pos个字符起长度为len的子串。//(8) 找子串T第一次出现在主串S中的位置并返回。

创建主函数 main.cpp 源文件编写界面并执行程序

#include#include#include#include"struct.h"#include"function_declare.h"int main() {int num;SString S;read_string(&S);printf("--按任意键进入主菜单--\n");getchar();while (1) {system("cls");printf("============主菜单=========\n");printf("0、退出\n");printf("1、显示字符串信息\n");printf("2、查找指定字符\n");printf("3、插入字符\n");printf("4、删除指定字符(所有字符)\n");printf("5、替换字符(所有字符)\n");printf("6、串拼接\n");printf("7、求子串\n");printf("8、模式匹配BF算法\n");printf("9、修改txt文档\n");printf("-----------------------------------\n");printf("请输入需要的功能序号:");scanf("%d", &num);printf("-----------------------------------\n");switch (num) {case 0:system("cls");printf("===已退出!===\n");system("pause");return 0;case 1:ShowString(S);system("pause");break;case 2:FindString(S);system("pause");break;case 3:InsertString(S);system("pause");break;case 4:DeleteString(S);system("pause");break;case 5:ReplaceString(S);system("pause");break;case 6:TogetherString(S);system("pause");break;case 7:FindSonString(S);system("pause");break;case 8:MatchedBFAlgorithm(S);system("pause");break;case 9:updata_book(&S);system("pause");break;default:printf("输入错误,请重新输入!\n");system("pause");break;}}return 0;}

测试文本放到本项目的目录上即可

提示:如果读写文本出现乱码,可能是你的文本编码格式跟编译器对应不上,新建一个新的.txt再尝试。


功能截图:

字符串操作的应用,与文章配套-C++文档类资源-CSDN下载字符串操作的应用,与文章配套更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_55797565/85083869

如果有用的话可以给一个小赞吗