在字符数组中插入一个字符
设计思路
问题思索
代码附录
字符串中插入字符问题
在字符数组中插入一个字符以前都是照猫画虎,一直都没有自己亲自动手尝试过。这次亲自上阵,把自己的思路尽量理清并完成。
设计思路定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value。
再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值。
赋值,将a中所有元素copy到b。
在pos位置前的元素不改动,pos位置的元素改为value。b[pos]=value;
对于pos位置后的元素:b[pos+1]=a[pos] //此处的pos执行自增运算
数组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;
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。