输入两个字符串,实现将字符串2插入到字符串1 的指定位置(该位置由有用户输入)

输入两个字符串,实现将字符串2插入到字符串1 的指定位置(该位置由有用户输入)。(如字符串1为:“abcdefg”,字符串2为“1234”,指定位置为3,操作后字符串1 为“ab1234cdefg”。程序中只允许定义2个字符串)

供参考:

#include <stdio.h>
#include <string.h>
int main() 
{ 
    char str1[100], str2[100]; 
    int  pos; 
    printf("请输入字符串1:"); 
    gets(str1); 
    printf("请输入字符串2:"); 
    gets(str2); 
    printf("请输入插入位置(>0):"); 
    scanf("%d", &pos); // 插入字符串2到字符串1指定位置 
    memmove(str1 + pos + strlen(str2) - 1, str1 + pos - 1, strlen(str1) - pos + 2);
    memcpy(str1 + pos - 1, str2, strlen(str2));
    printf("操作后的字符串1为:%s", str1); 
    return 0;
}

如果对你有启发和帮助,请采纳! 答案参考Chatgpt解答
以下是使用C语言实现将字符串2插入到字符串1指定位置的示例代码:

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 100

void insertString(char *str1, const char *str2, int position) {
    int str1_length = strlen(str1);
    int str2_length = strlen(str2);
    int total_length = str1_length + str2_length;

    if (total_length > MAX_LENGTH) {
        printf("Error: Exceeded maximum string length.\n");
        return;
    }

    // 将字符串2插入到字符串1的指定位置
    memmove(str1 + position + str2_length, str1 + position, str1_length - position + 1);
    memcpy(str1 + position, str2, str2_length);
}

int main() {
    char str1[MAX_LENGTH];
    char str2[MAX_LENGTH];
    int position;

    printf("请输入字符串1:");
    fgets(str1, MAX_LENGTH, stdin);
    str1[strcspn(str1, "\n")] = '\0';  // 去除输入字符串1末尾的换行符

    printf("请输入字符串2:");
    fgets(str2, MAX_LENGTH, stdin);
    str2[strcspn(str2, "\n")] = '\0';  // 去除输入字符串2末尾的换行符

    printf("请输入要插入的位置:");
    scanf("%d", &position);

    insertString(str1, str2, position);

    printf("操作后的字符串1:%s\n", str1);

    return 0;
}

这段代码首先定义了一个insertString函数,它接受三个参数:str1表示要插入的目标字符串,str2表示要插入的字符串,position表示要插入的位置。函数使用memmovememcpy函数来实现将str2插入到str1的指定位置。

main函数中,首先获取用户输入的字符串1和字符串2,并去除末尾的换行符。然后,获取用户输入的要插入的位置。最后,调用insertString函数进行插入操作,并输出操作后的字符串1。

请注意,此示例中使用了fgetsscanf函数来获取用户输入,并进行了一些输入验证。同时,定义了一个宏MAX_LENGTH来限制字符串的最大长度,您可以根据需要进行调整。


#include <stdio.h>
#include <string.h>

char a[1100],b[1100];
int n;
char c[2200];

int main(){
    scanf("%s %s %d",a,b,&n);
    int idx = 0;
    for(int i=0;i<strlen(a);i++){//遍历字符串1 
        if(i==n-1) {//如果是要插入的位置 数组下标是从0开始 所以应该是n-1 
            for(int j=0;j<strlen(b);j++){ //插入字符串2 
                c[idx] = b[j];
                idx ++;
            }
        }
        //把字符串1复制过去 
        c[idx] = a[i];
        idx++;
    }
    c[idx] = '\0';
    printf("%s",c);
    return 0;
}

img


#include <stdio.h>
#include <string.h>

#define MAX_LEN 100

int main() {
    char str1[MAX_LEN], str2[MAX_LEN];
    int insert_pos;

    printf("Enter string 1: ");
    scanf("%s", str1);

    printf("Enter string 2: ");
    scanf("%s", str2);

    printf("Enter insert position: ");
    scanf("%d", &insert_pos);

    int len1 = strlen(str1);
    int len2 = strlen(str2);

    if (insert_pos > len1) {
        printf("Error: Insert position is out of range.\n");
        return 1;
    }

    // 移动str1中插入位置后面的字符
    for (int i = len1; i >= insert_pos; i--) {
        str1[i + len2] = str1[i];
    }

    // 将str2插入到指定位置
    for (int i = 0; i < len2; i++) {
        str1[insert_pos + i] = str2[i];
    }

    printf("Result: %s\n", str1);

    return 0;
}

注意,该程序没有对输入的字符串长度进行检查,如果输入的字符串超过了最大长度 MAX_LEN,可能会导致程序出错或崩溃。