输入两个字符串,实现将字符串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
表示要插入的位置。函数使用memmove
和memcpy
函数来实现将str2
插入到str1
的指定位置。
在main
函数中,首先获取用户输入的字符串1和字符串2,并去除末尾的换行符。然后,获取用户输入的要插入的位置。最后,调用insertString
函数进行插入操作,并输出操作后的字符串1。
请注意,此示例中使用了fgets
和scanf
函数来获取用户输入,并进行了一些输入验证。同时,定义了一个宏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;
}
#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,可能会导致程序出错或崩溃。