Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将一串字符插入字符*的中间,并将所有字符向右移动而不删除任何内容_C - Fatal编程技术网

C 如何将一串字符插入字符*的中间,并将所有字符向右移动而不删除任何内容

C 如何将一串字符插入字符*的中间,并将所有字符向右移动而不删除任何内容,c,C,假设我有char*p,p有短语“这不容易”,它在结尾以null结尾。我想通过p搜索,在遇到“s”的地方,我想把“101”改为“101”,而不删除任何其他字符。对于这个例子,p从“这不容易”到“thi101 i101 not ea101y”。我也只能使用stdio.h、stdlib.h和string.h头 char q[] = "s"; char r[] = "101"; for(int j = 0; s[j]!='\0'; j++){ if(s[j]==q[0]){

假设我有char*p,p有短语“这不容易”,它在结尾以null结尾。我想通过p搜索,在遇到“s”的地方,我想把“101”改为“101”,而不删除任何其他字符。对于这个例子,p从“这不容易”到“thi101 i101 not ea101y”。我也只能使用stdio.h、stdlib.h和string.h头

char q[] = "s";
char r[] = "101";
    for(int j = 0; s[j]!='\0'; j++){
        if(s[j]==q[0]){
            int temp = 0;
            s[j] = r[temp];
            temp++;
            int temp2 = j;
            while(temp<3){
                for(int k = length; k>j+1; k--){
                    s[k]=s[k-1];

                }
                s[j] = r[temp];
                temp++;
                j++;                    
            }
            j = temp2;
        }
    }
}
charq[]=“s”;
字符r[]=“101”;
对于(int j=0;s[j]!='\0';j++){
如果(s[j]==q[0]){
内部温度=0;
s[j]=r[temp];
temp++;
int temp2=j;
而(tempj+1;k--){
s[k]=s[k-1];
}
s[j]=r[temp];
temp++;
j++;
}
j=temp2;
}
}
}
s是我前面提到的字符串“这不容易”


我当前得到的输出是“thi011 i011 not”�ea”的长度不正确。

首先确定“s”(1)和“101”(3)的长度。然后,将每次出现“s”后的所有字符移位3-1=2,并将“101”放入


当然,您必须确保字符串缓冲区对于操作来说足够大。

假设我问您尝试了什么?如果在接下来的2分钟内没有人回应,我也可以投票结束这个问题。至少这个标题是合理的问题形式(虽然有点长),这比这里发布的大多数问题都要多。然而,其余的。。。呃,我添加了一段代码,以及我现在得到的输出。