综合练习字符串、函数、指针的基础知识

本题的关键就是指针,指针可实现对源数据持续处理。

题目来源于我的大学老师,如有侵权可联系作者删除,如果有更简单的算法,也欢迎加qq讨论。

作者qq:3293831515

题目:在主函数中定义一个字符数组,为数组初始化一个字符串”ababcabcd”,定义4个子函数fun1、fun2、fun3、fun4分别对该字符串分别进行查找、替换、插入、删除处理。在主函数中输入整数1~4来选择进行何种处理,当输入小于1或者大于4的整数时程序运行结束,否则就一直循环下去。程序运行效果如图所示。 提示:

(1)本题仍然是一个while(1)嵌套选择结构的问题。

(2)本题中每一个选项值输入后,紧接着都要输入一个字符,数值在前,字符在后输入时,系统会将数值后的“回车符”认为是有效字符而存到变量中,为使真正的字符也存放到变量中,字符输入语句需作特殊处理,可参考如下:scanf("%c%c", &x, &y); 第一个变量x没有实际意义,它的功能是接收数值后面的“回车符”,真正的字符是存放到变量y中。

(3)如果输入的两个字符之间有空格时, 如右图所示,字母’a’和字母’A’之间有空格, 那么输入语句应写成scanf("%c%c %c", &x, &y, &z);变量x用来接收“回车符”,变量y接收字母’a’,变量z接收字母’A’,后面两个 %c 之间有空格。

(4)“插入”字符操作的方法是:先把待插入位置后面的字符依次后移一个单元,再在待插入位置处放置一个新字符。

(5)“删除”字符操作的方法是:把原字符串中需要保留的字符复制到另外一个字符数组中,注意手动添加新字符串的结束符’\0’。

#include<stdio.h>
#include<string.h>int fun1(char *p,char *a)
{int sum=0;char x,y;printf("【字符查找操作】请输入一个待查找字符:");scanf("%c%c",&x,&y);for(p=a;p<(a+10);p++){if(*p==y){sum++;}    }printf("【字符查找操作】待查找字符出现的次数:%d",sum);
}
int fun2(char *a)
{    int i;char x,y,z;printf("【字符替换操作】请输入一个待查找字符和一个替换字符:");scanf("%c%c %c",&x,&y,&z);for(i=0;i<10;i++){if(a[i]==y){a[i]=z;}}printf("【字符替换操作】用字母%c替换字母%c后的字符串是:%s",z,y,a);
}
int fun3(char *a)
{int n,i;char p,j,b[11];printf("【字符插入操作】请输入一个字符和待插入的位置:");scanf("%c%c",&j,&p);scanf("%d",&n);for(i=0;a[i]!='\0';i++){b[i]=a[i];b[n]=p;}for(i=n;b[i]!='\0';i++){b[i+1]=a[i];}printf("%s",b);
}
int fun4(char *p,char *a)
{char x,t,y,z;printf("【字符删除操作】请输入指定删除的字符:");scanf("%c%c",&x,&y);printf("删除字符%c后的新字符串是:",y);for(p=a;p<(a+10);p++){if(*p!=y){printf("%c",*p);}}
}int main()
{int i;char a[50]={"ababcabcd"};char *p=a;printf("**********************************************\n");printf("\t  【字符串处理】\t\n");printf(" 字符串操作选项:<1.查找 2.替换 3.插入 4.删除>\n");printf(" 原始数组是:ababcabcd\n");    printf("**********************************************\n");while(1) {printf("\n\n请输入一个选项值;");scanf("%d",&i);                        if(i==1){fun1(p,p);}else if(i==2){fun2(a);}else if(i==3){fun3(a);}else if(i==4){fun4(p,p);}else {printf("无效的数值,程序结束运行");break; }}return 0;} 

c语言简单的字符串处理相关推荐

  1. 【C语言】简单判断字符串是否为回文

    **C语言简单判断字符串是否为回文**哈哈哈哈哈,作为一个刚学c语言不久的小白,今天来分享一下自己今天学到的一个判断字符串是否为回文的解决方法_(:з」∠)_小白用的编译器是Visual Studio ...

  2. c语言追加字符串_Redis源码解析二--简单动态字符串

    Redis 简单动态字符串 1.介绍 Redis兼容传统的C语言字符串类型,但没有直接使用C语言的传统的字符串(以'0'结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(simple dyn ...

  3. redis学习 -- 简单动态字符串

    Redis没有使用C语言字符串的形式,通过'\0'作为结尾,而是使用了简单动态字符串(simple dynamic string). 当Redis使用的字符串不需要修改字符串的内容的时候,可以使用C语 ...

  4. 阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?

    2021开工第一天,就有小伙伴私信我,还给我分享了一道他面阿里的redis题(这家伙绝比已经拿到年终奖了),我看了以后觉得挺有意思,题目很简单,是那种典型的似懂非懂,常常容易被大家忽略的问题.这里整理 ...

  5. Swift语言指南(十)--字符串与字符

    原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...

  6. 《Redis设计与实现》阅读笔记(二)--简单动态字符串

    简单动态字符串 Redis只在一些无需对字符串进行修改的地方使用C字符串,大部分时候使用简单动态字符串(simple dynamic string, SDS),字符串的抽象类型.二进制安全,可以存放任 ...

  7. Redis简单动态字符串

    简单动态字符串 Simple Dynamic String是Redis内部自己定义的一种数据类型 在Redis内部, 任何包含字符串的键值对都是由SDS实现的 SDS还被用于缓冲区, 比如AOF缓冲区 ...

  8. c 字符串数组_redis为什么不直接使用C字符串,而要自定义简单动态字符串?

    来源:公众号[编程珠玑] 作者:守望先生 ID:shouwangxiansheng Redis (一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库.)没有直接使用 C ...

  9. Redis内部数据结构详解之简单动态字符串(sds)

    本文所引用的源码全部来自Redis2.8.2版本. Redis中简单动态字符串sds数据结构与API相关文件是:sds.h, sds.c. 转载请注明,本文出自:http://blog.csdn.ne ...

最新文章

  1. gis中的加权求和工具在哪里_ArcGIS教程:加权总和的工作原理
  2. createinstance.java_C# Activator.CreateInstance()方法使用
  3. 蓝牙连接不上车要hfp_蓝牙耳机的音质由什么因素决定?价格高的蓝牙耳机音质一定好吗?...
  4. 重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准
  5. 【Pytorch神经网络理论篇】 03 Pytorch快速上手(三)张量的数据操作
  6. Address already in use: JVM_Bind 8083端口被占用的几个解决办法
  7. php radius类,PHP Radius Search
  8. 【HTTP】POST 与 PUT 方法区别
  9. Linux连接Internet
  10. Python GUI案例之看图猜成语开发(完结篇)
  11. Linux线程的创建与回收
  12. 数字信号处理---模拟信号数字处理方法
  13. 信道检测手机软件 ios_wifi分析仪如何检测周围wifi信号 wifi分析仪使用方法【详解】...
  14. 关于网站建设的主要流程和步骤(小白指南)
  15. 如何用电脑自带的软件录屏
  16. android中bmob云存储,Android中的Bmob移动后端云服务器功能
  17. 树莓派3B安装64位操作系统(树莓派无需连接显示器键盘鼠标)
  18. jenkins下载插件失败
  19. 区块链关键技术1(笔记)
  20. gcd中group实现并发任务全部完成后

热门文章

  1. 上班摸鱼用Python写一个酷狗音乐播放器
  2. spring事务失效了? @Transactional不管用了 ?看看这些@Transation的坑
  3. docker mysql 内存大小_docker容器内存占用过高(例如mysql)
  4. 互联网医院 2020年突出成就_我省2020年互联网企业20强榜单出炉
  5. npm 创建第一个Angular项目
  6. php中表格第一行不动,word表格行高拉不动怎么办
  7. EI检索收录的文献如何下载全文?
  8. elk面试题_2019年最新公务员、事业单位面试题库(含答案)elk
  9. 手机无网状态下获取经纬度,离线定位的方法。
  10. 白帽子-高端信息安全培训(攻防技术、渗透测试、安全产品、安全标准、风险评估、等级保护、项目实战)...