以前都是照猫画虎,一直都没有自己亲自动手尝试过。这次亲自上阵,把自己的思路尽量理清并完成。
设计思路
- 定义一个字符数组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()缓冲区的理解:
scanf()是以\t \n space 为结束标志。
错误示范:![](https://img-blog.csdn.net/20180120114842175?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmx5SmFwYW5fdmliYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
当遇到以上代码时,请千万不要忘记在输入字符前加getchar()清除掉缓冲区中的回车符。
正确示范:![](https://img-blog.csdn.net/20180120115008825?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmx5SmFwYW5fdmliYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
代码附录
#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);
}