C语言 怎样多次移动整个数组啊 没什么思路

编写一个函数,利用指针在字符串s中的指定字符前插入标记字符。指定字符和标记字符均从键盘输入。

要求:子函数 char *InsertStr(char *s,char t,char c)

【输入形式】

输入主串s,输入指定字符t,输入标记字符c。

【输出形式】

输出插入后字符串

【样例输入】

abcabcde

b

【样例输出】

a#bca#bcde

用strcpy就可以实现字符串的移动,下面是一个实现,供参考:


#include  <stdio.h>
#include <string.h>
char * InsertStr(char *s,char t,char c){
    
    char ch;
    int i=0;
    char temp[150];
    while(s[i]!='\0'){
        
        if(s[i]==t){
            if(i==0){ //如果插入的是第一个字符位置 
                strcpy(temp,s);  //复制当前字符位置往后的字符串到temp数组 
                s[i]=c;  //当前位置插入标记字符 
                strcpy(s+1,temp);  //当前位置后面拼接原来的字符串 
            //    printf("s=%s\n",s);
                i+=2;  //指向指定字符后面的一个字符位置 
                continue;  //开始下一个循环 
            }else {  //如果插入的是第一个字符后的位置 
                strcpy(temp,s+i);  //复制当前字符位置字符串到temp数组 
                s[i]=c;  //当前位置插入标记字符 
                strcpy(s+i+1,temp);  //当前位置后面插入一个字符拼接原来的字符串 
            //    printf("s=%s\n",s);
                i+=2; //指向指定字符后一个字符 
                continue; //开始下一个循环 
            }
        }
        
        i++;//指向下一个字符位置 
    }
    
    
    return s;
    
} 


int main(void){
    char s[100];
    char t,c;
    scanf("%s",s);
    while(getchar()!='\n')
        continue;
    scanf("%c",&t);
//    printf("t=%c\n",t);
    while(getchar()!='\n')
        continue;
    scanf("%c",&c);
//    printf("c=%c\n",c);
    
    InsertStr(s,t,c);
    puts(s);
    return 0;
}

同样的问题,请参考,如有帮助请采纳
https://blog.csdn.net/u010547141/article/details/102877772

在数组中插入元素的思路是这样的,在i前插入,那么从结尾处n开始到i处移动元素,每个元素移动到它下标+1处即可。
另外针对这个题来说没必要移动数组,遍历一遍字符串,非指定字符直接输出就行,如果是指定字符,输出标记字符和指定字符即可即可。