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);
} 


  • 14
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值