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

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

(0)

相关推荐

  • C语言数组任意位置插入一个元素方法

    前言: 这篇文章我们来看看向C语言的数组中随机插入一个元素的方法. 如果是在python向列表中随机添加元素,我们往往使用insert()的方法. l = ['Python', 'C++', 'Java'] #插入元素 l.insert(1, 'C') print(l) #插入元组,整个元祖被当成一个元素 t = ('C#', 'Go') l.insert(2, t) print(l) #插入列表,整个列表被当成一个元素 l.insert(3, ['Ruby', 'SQL']) print(l)

  • C语言字符串数组详解

    C语言字符串数组 字符串是连续的字符序列,最后以空字符'\0'作为终止符.一个字符串的长度指所有字符的数量,但不包括终止符.在 C 语言中,没有字符串类型,自然也就没有运算符以字符串为操作数. 字符串被存储在元素类型为 char 或宽字符类型数组中(宽字符类型指 wchar_t.char16_t 或 char32_t).宽字符组成的字符串也称为宽字符串(wide string). C 标准库提供了大量的函数,它们可以对字符串进行基本操作,例如字符串的比较.复制和连接等.在这些传统的字符串函数以外

  • c语言字符数组与字符串的使用详解

    1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串在c语言中,将字符串作为字符数组来处理.(c++中不是)在实际应用

  • C语言字符串操作总结大全(超详细)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1

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

    目录 在字符数组中插入一个字符 设计思路 问题思索 代码附录 字符串中插入字符问题 在字符数组中插入一个字符 以前都是照猫画虎,一直都没有自己亲自动手尝试过.这次亲自上阵,把自己的思路尽量理清并完成. 设计思路 定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value. 再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值. 赋值,将a中所有元素copy到b. 在pos位置前的元素不改动,pos位置的元素改为value.b[pos]=value; 对于

  • 一篇文章告诉你如何在Java数组中插入一个字符

    目录 定义一个数组 定义插入的字符 打印插入之前字符排列顺序 假设插入位置 找到插入位置 数组数据下移 移入数值 输出数组 总结 定义一个数组 public class charInsert { public static void main(String[] args) { // 这是字符数组 char[] ch = new char[9]; ch[0] = 'a'; ch[1] = 'b'; ch[2] = 'c'; ch[3] = 'f'; ch[4] = 'g'; ch[5] = 'i'

  • java实现向有序数组中插入一个元素实例

    整理文档,搜刮出一个java实现向有序数组中插入一个元素,稍微整理精简一下做下分享 package cn.jbit.array; import java.util.*; public class Insert { public static void main(String[] args) { //字符排序 char[] chars = new char[9]; chars[0] = 'a'; chars[1] = 'c'; chars[2] = 'u'; chars[3] = 'b'; cha

  • 向一个数组中插入一个1~100的随机数

    namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List<int> list = new List<int>(); Random ran = new Random(); while(true) { if (list.Count >= 100) { break; } int s = ran.Next(1, 101); if (!list.Contains(s))

  • C语言之从字符数组中删除特定的字符

    从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可.以下为具体的实现方法: #include<stdio.h> int main() { char str[100],c; int j,k; printf("please input a string:"); gets(str); printf("\nEnter a character:"); c=getchar(); for(j=k=0;str[j]!=

  • java在原字符中插入新字符或字符串实例

    插入字符代码: public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer("田田是一个女生!");//建立一个字符缓存区,缓存区中的内容为"田田是一个女生!" System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容 System.ou

  • C#使用linq语句查询数组中以特定字符开头元素的方法

    本文实例讲述了C#使用linq语句查询数组中以特定字符开头元素的方法.分享给大家供大家参考.具体如下: 下面的代码查询数组中以字母k开头的元素 using System; using System.Collections.Generic; using System.Linq; using System.Text; static void Main(string[] args) { string[] names = {"kaka","kunka","kuma

  • Python 实现字符串中指定位置插入一个字符

    如下所示: str_1='wo shi yi zhi da da niu/n'str_list=list(str_1) nPos=str_list.index('/') str_list.insert(nPos,',') str_2="".join(str_list) print(str_2) 从文件中提取行,在行最末尾插入一个逗号. 以上这篇Python 实现字符串中指定位置插入一个字符就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章

  • JS 判断某变量是否为某数组中的一个值的3种方法(总结)

    1.正则表达式 js 中判断某个元素是否存在于某个 js 数组中,相当于 PHP 语言中的 in_array 函数. Array.prototype.in_array=function(e){ var r=new RegExp(','+e+','); return (r.test(','+this.join(this.S)+','));}; 用法如下: var arr=new Array(['b',2,'a',4]); arr.in_array('b');//判断'b'字符是否存在于 arr 数

  • php数组函数序列之array_unshift() 在数组开头插入一个或多个元素

    array_unshift()定义和用法 array_unshift() 函数在数组开头插入一个或多个元素. 被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样. 该函数会返回数组中元素的个数. 语法 array_unshift(array,value1,value2,value3...)参数 描述 array 必需.规定输入的数组. value1 必需.规定插入的值. value2 可选.规定插入的值. value3 可选.规定插入的值. 提示和注释 注释:所有的数值键名

随机推荐