不使用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("请输入原字符串
");
       gets(str1);
       printf("请输入所要插入的字串
");
       gets(str2);
       printf("请输入从第几位插入
");
       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库来实现函数的几个代码搞出来,顺便那个矩阵也可以提上日程,以便期末的复习。

人生如逆旅,我亦是行人
原文地址:https://www.cnblogs.com/sz2003/p/14071284.html