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

 更新时间:2022年06月16日 15:00:53   作者:FlyJapan_viba  
这篇文章主要介绍了C语言如何在字符数组中插入一个字符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

设计思路

  1. 定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value。
  2. 再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值。
  3. 赋值,将a中所有元素copy到b。 
  4. 在pos位置前的元素不改动,pos位置的元素改为value。b[pos]=value;
  5. 对于pos位置后的元素:b[pos+1]=a[pos] //此处的pos执行自增运算
  6. 数组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; 
} 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Qt中JSON使用的详细步骤

    Qt中JSON使用的详细步骤

    本文主要介绍了Qt中JSON使用的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 基于C语言实现三子棋游戏

    基于C语言实现三子棋游戏

    这篇文章主要为大家详细介绍了基于C语言实现三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 大数(高精度数)模板(分享)

    大数(高精度数)模板(分享)

    本篇文章对大数(高精度数)模板进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++ string和wstring相互转换方式

    C++ string和wstring相互转换方式

    这篇文章主要介绍了C++ string和wstring相互转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • libxml教程(图文详解)

    libxml教程(图文详解)

    本篇文章是对libxm进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++如何获取鼠标点击位置

    C++如何获取鼠标点击位置

    这篇文章主要介绍了C++如何获取鼠标点击位置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++中类的构造函数初始值列表解读

    C++中类的构造函数初始值列表解读

    这篇文章主要介绍了C++中类的构造函数初始值列表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C 语言实现一个简单的 web 服务器的原理解析

    C 语言实现一个简单的 web 服务器的原理解析

    这篇文章主要介绍了C 语言实现一个简单的 web 服务器的原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • C语言实现简单扫雷游戏

    C语言实现简单扫雷游戏

    这篇文章主要为大家详细介绍了C语言实现简单扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 使用QGraphicsView实现气泡聊天窗口+排雷功能

    使用QGraphicsView实现气泡聊天窗口+排雷功能

    这篇文章主要介绍了使用QGraphicsView实现气泡聊天窗口+排雷,重点给大家介绍使用QWebEngineView控件内嵌html+CSS的实现方式,需要的朋友可以参考下
    2022-04-04

最新评论