服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言如何在字符数组中插入一个字符

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

2022-12-26 15:55FlyJapan_viba C/C++

这篇文章主要介绍了C语言如何在字符数组中插入一个字符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

设计思路

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()是以 space 为结束标志。

错误示范:

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

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

正确示范:

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

代码附录

#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]!=""; i++)	b[i]=a[i];
	b[pos]=value;
	for(int i=pos; b[i]!=""; 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("
%c", &ch);	
	printf("请输入你要插入字符的位置:");
	scanf("%d", &place);
	
	//判断字符串中字符的数量 
	while(str[++cnt]); 	
	
    //向后移位 
    str[cnt+1] = "";
	for(i=0; i<cnt-place; ++i){
		str[cnt-i] = str[cnt-i-1];
	}    
	str[place] = ch;
	 
	printf("新的字符串为:%s
", str);
	free(str);
	
	system("pause");
	return 0; 
} 

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

原文地址:https://blog.csdn.net/FlyJapan_viba/article/details/79111861

延伸 · 阅读

精彩推荐
  • C/C++C++11/14 线程的创建与分离的实现

    C++11/14 线程的创建与分离的实现

    这篇文章主要介绍了C++11/14 线程的创建与分离的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    lesliefish8702021-07-19
  • C/C++C++之重载 重定义与重写用法详解

    C++之重载 重定义与重写用法详解

    这篇文章主要介绍了C++之重载 重定义与重写用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    青山的青5262022-01-04
  • C/C++Eclipse中C++连接mysql数据库

    Eclipse中C++连接mysql数据库

    这篇文章主要为大家详细介绍了Eclipse中C++连接mysql数据库 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    tyt叮当tyt6542021-07-31
  • C/C++c语言 深入理解函数的递归

    c语言 深入理解函数的递归

    这一章讲解的是函数的递归,因为递归函数是一个非常重要求解复杂问题的方法之一,在学习算法的过程之中我们也会遇到他,所以我想对它进行一次讲解...

    诚挚的乔治6132022-09-16
  • C/C++C语言实现车辆出租管理系统

    C语言实现车辆出租管理系统

    这篇文章主要为大家详细介绍了C语言实现车辆出租管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Zenith_Lee12492021-07-20
  • C/C++关于背包问题的一些理解和应用

    关于背包问题的一些理解和应用

    这篇文章主要介绍了关于背包问题的一些理解和应用,本文可以说是背包问题九讲的补充、读后感,需要的朋友可以参考下...

    C语言程序设计8182021-01-30
  • C/C++C++基础知识之运算符重载详解

    C++基础知识之运算符重载详解

    这篇文章主要为大家详细介绍了C++基础知识之运算符重载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能...

    骆驼胡杨6272022-09-28
  • C/C++Linux C 获取进程退出值的实现代码

    Linux C 获取进程退出值的实现代码

    本篇文章是对在Linux下使用c语言获取进程退出值的方法进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网5652020-12-09