目录
  • 在字符数组中插入一个字符
    • 设计思路
    • 问题思索
    • 代码附录
  • 字符串中插入字符问题

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

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

    设计思路

    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 为结束标志。

    错误示范: 

    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]!='\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; 
    } 
    

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

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。