C语言如何在字符数组中插入一个字符

目录

在字符数组中插入一个字符

设计思路

问题思索

代码附录

字符串中插入字符问题

在字符数组中插入一个字符

以前都是照猫画虎,一直都没有自己亲自动手尝试过。这次亲自上阵,把自己的思路尽量理清并完成。

设计思路

定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value。

再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值。

赋值,将a中所有元素copy到b。 

在pos位置前的元素不改动,pos位置的元素改为value。b[pos]=value;

对于pos位置后的元素:b[pos+1]=a[pos] //此处的pos执行自增运算

数组b即所得数组。

问题思索

关于gets(),scanf()缓冲区的理解:

gets()是以换行符为结束标志的。当遇到换行符时,函数停止读取,回车符不会被载入缓冲区。

scanf()是以\t \n space 为结束标志。

错误示范: 

当遇到以上代码时,请千万不要忘记在输入字符前加getchar()清除掉缓冲区中的回车符。

正确示范:

 

代码附录 #include <stdio.h> #include <string.h> //在char数组中的第pos个位置添加字符 int main(){ char a[500],b[500]; int pos; char value; gets(a); scanf("%d",&pos); getchar(); scanf("%c",&value); for(int i=0; a[i]!='\0'; i++)b[i]=a[i]; b[pos]=value; for(int i=pos; b[i]!='\0'; i++)b[i+1]=a[i]; puts(b); } 字符串中插入字符问题

由键盘任意输入一串字符,再输入一个字符和一个位置,将此字符插入在此串字符的这个位置上。

如:原串为abcdef,插入字符为k,位置为2,新串为abkcdef。

#include<stdio.h> #include<stdlib.h> int main(void) { int length, i, place, cnt=0; char* str; char ch; //为字符获得足够的内存空间 printf("请输入这串字符的最大长度:"); scanf("%d", &length); str = (char*)malloc(length*sizeof(char)+1); printf("请输入这串字符:"); scanf("%s", str); printf("请输入你要插入的字符:"); scanf("\n%c", &ch); printf("请输入你要插入字符的位置:"); scanf("%d", &place); //判断字符串中字符的数量 while(str[++cnt]); //向后移位 str[cnt+1] = '\0'; for(i=0; i<cnt-place; ++i){ str[cnt-i] = str[cnt-i-1]; } str[place] = ch; printf("新的字符串为:%s\n", str); free(str); system("pause"); return 0; }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    字符库快捷键|字符串快捷键

    字符库快捷键|字符串快捷键,,1. 字符串快捷键1、单行注释单行注释是 #Mac的快捷键是 command+/windows的快捷键是 Ctrl + /2、多行注

    wps插入罗马字符页码|wps插入罗马数字

    wps插入罗马字符页码|wps插入罗马数字,罗马,页码,插入,字符,1.wps怎样插入罗马数字WPS里面插入罗马数字的方法(以WPS文字为例): (1)使用WPS里面

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    区域语言设置|区域语言设置工具

    区域语言设置|区域语言设置工具,,区域语言设置工具你好,大致的方法如下,可以参考:1、按下键盘的windows 图标,再开始菜单中单击“设置”;出现的

    数列求和快捷键|数组求和快捷键

    数列求和快捷键|数组求和快捷键,,数组求和快捷键1,这是文本型数组直接运算 不可能 除非单个的取出来分割后转数值型,再找相同的X[1],进行X[2

    c4d语言设置|c4d汉语设置

    c4d语言设置|c4d汉语设置,,1. c4d汉语设置mac版的C4D是这样的,中文字体是有的,但是是以拼音的形式存在,比如黑体就是ht。中文字体以拼音方式

    电脑宣传语|电脑宣传语言

    电脑宣传语|电脑宣传语言,,1. 电脑宣传语言1.我做好了与你过一辈子的打算,也做好了你随时要走的准备,2.每段青春都会苍老,但我希望记忆里的你