不使用string库来实现指定位置字符串的插入(初学指针)
好久没写随笔了,今天是十二月的第一天,也是2020年的最后一个月,在这个特殊的日子中,祝大家好运连连。
好的开始,由于初学,对于指针的理解并不是特别透彻,因此这个代码只是通过实验指导勉强搞出来的,可能漏洞有很多,望各位大佬批评指正。
(ps:其实我应该先把之前作的矩阵转置给搞出来的,这个虽然是用到了指针,但是涉及的特别少,有点挂羊头卖狗肉的意味了)
话不多说,直接上代码:
#include <stdio.h> #include <stdlib.h> void charu(char *str1,char *str2,int n);/*声明定义的函数*/ int main(){ char str1[100]; char str2[100]; int n; printf("请输入原字符串\n"); gets(str1); printf("请输入所要插入的字串\n"); gets(str2); printf("请输入从第几位插入\n"); scanf("%d",&n); charu(str1,str2,n); } void charu(char *str1,char *str2,int n){ int n1=0,n2=0;/*将原数组拆分成两个数组,之后和要插入的数组进行重组*/ while(str1[n1]!=0){/*测量str1的长度*/ n1++; } while(str2[n2]!=0){/*测量str2的长度*/ n2++; } char str[100]; int i,k,m; for(i=0;i<n;i++){/*将插入前的元素分配到str中*/ str[i]=str1[i]; } for(i=n;i<n2+n;i++){/*将插入的元素分配到str中*/ str[i]=str2[i-n]; } for(i=n+n2;i<n2+n1;i++){/*将str1剩余的元素分配到str中*/ str[i]=str1[i-n2]; } printf("%s",str);/*输出*/ }
输出结果如下:
请输入原字符串 ilovechina 请输入所要插入的字串 very 请输入从第几位插入 1 iverylovechina -------------------------------- Process exited after 6.873 seconds with return value 14 请按任意键继续. . .
ok,这边稍微解释以下原理,其实看注释应该已经可以理解一个大半了,就是通过把原来的字符数组给拆分成插入前的部分和插入后的部分,然后将他们和要插入的字符数组进行重组输出,唯一不好理解的应该就是那个i的取值。
下次再写随笔可以把之前写的类似的不使用string库来实现函数的几个代码搞出来,顺便那个矩阵也可以提上日程,以便期末的复习。
人生如逆旅,我亦是行人