用c语言(如字符串1为:“abcdefg”,字符串2为“1234”,指定位置为3,操作后字符串1 为“ab1234cdefg”。程序中只允许定义2个字符串)
时间: 2023-12-31 20:03:57 浏览: 126
以下是用C语言实现的程序,实现了将字符串2插入到字符串1的指定位置:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "abcdefg";
char str2[50] = "1234";
int pos = 3;
int len1 = strlen(str1);
int len2 = strlen(str2);
// 将字符串2插入到字符串1的指定位置
for(int i = len1; i >= pos; i--) {
str1[i + len2] = str1[i];
}
for(int i = 0; i < len2; i++) {
str1[pos + i] = str2[i];
}
printf("操作后字符串1为:%s\n", str1);
return 0;
}
```
输出结果为:
```
操作后字符串1为:ab1234cdefg
```
相关问题
C语言输入两个字符串,实现将字符串2插入到字符串1 的指定位置(该位置由有用户输入)。 (如字符串1为:“abcdefg”,字符串2为“1234”,指定位置为3,操作后字符串1 为“ab1234cdefg”。程序中只允许定义2个字符串)
可以按照以下代码实现将字符串2插入到字符串1的指定位置:
```
#include <stdio.h>
#include <string.h>
int main() {
int pos;
char str1[100], str2[100], temp[100];
printf("请输入字符串1:");
scanf("%s", str1);
printf("请输入字符串2:");
scanf("%s", str2);
printf("请输入插入位置:");
scanf("%d", &pos);
int len1 = strlen(str1);
if (pos < 0 || pos > len1) {
printf("插入位置不合法!");
return 0;
}
strcpy(temp, &str1[pos]);
str1[pos] = '\0';
strcat(str1, str2);
strcat(str1, temp);
printf("插入后的字符串为:%s", str1);
return 0;
}
```
运行结果如下:
```
请输入字符串1:abcdefg
请输入字符串2:1234
请输入插入位置:3
插入后的字符串为:ab1234cdefg
```
用c语言实现我们经常在编辑各种文档时发现拼写错误,需要将错误的字符串替换为正确的字符串。 连续输入三个字符串,在第一个字符串中查找第二个字符串,如果存在,就将之替换为第三个字符串。 输出被更正后的第一个字符串。 (ABC的长度均不超过1000). 例如输入: ABCDEFG DE KKK 输出: ABCKKKFG 输入: ABCDEFG DE (空字符串) 输出:ABCFG (提示,请考虑一些特殊情况,例如 AAAAA AA ADA 你应该输出:ADADADADA,而不是ADAADAA。 如果输入的第三个字符串为空,那么相当于在第一个字符串中删除掉第二个字符串。 例如: 输入: ABCDEFG DE (空字符串) 那么你应该输出:ABCFG)
以下是用 C 语言实现的代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[1001], str2[1001], str3[1001];
scanf("%s %s %s", str1, str2, str3);
int len1 = strlen(str1), len2 = strlen(str2), len3 = strlen(str3);
int i, j, k, flag;
for (i = 0; i < len1; ) {
flag = 1;
for (j = 0; j < len2; j++) {
if (str1[i+j] != str2[j]) {
flag = 0;
break;
}
}
if (flag) {
if (len2 > len3) {
for (k = i; k < len1-len2+len3; k++) {
str1[k+len2-len3] = str1[k+len2];
}
str1[k+len2-len3] = '\0';
len1 = strlen(str1);
} else if (len2 < len3) {
for (k = len1; k >= i+len2; k--) {
str1[k+len3-len2] = str1[k];
}
str1[k+len3-len2] = '\0';
len1 = strlen(str1);
}
for (k = 0; k < len3; k++) {
str1[i+k] = str3[k];
}
len1 = strlen(str1);
i += len3;
} else {
i++;
}
}
printf("%s\n", str1);
return 0;
}
```
代码思路如下:
1. 首先读入三个字符串,分别存储在 `str1`、`str2`、`str3` 中。
2. 使用 `strlen` 函数获取每个字符串的长度。
3. 使用双重循环,在 `str1` 中查找 `str2`,如果找到了,就执行替换操作。
4. 如果要将 `str2` 替换为 `str3`,且 `str2` 的长度大于 `str3` 的长度,那么需要将 `str1` 中从 `i+len2` 开始的所有字符向前移动 `len2-len3` 个位置,以便腾出足够的空间插入 `str3`。如果 `str2` 的长度小于 `str3` 的长度,那么需要将 `str1` 中从 `len1` 开始逆序遍历到 `i+len2` 的所有字符向后移动 `len3-len2` 个位置,以便腾出足够的空间插入 `str3`。
5. 执行替换操作后,将 `i` 更新为 `i+len3`,因为 `str2` 已经被替换为 `str3`。
6. 最后输出更正后的 `str1`。
阅读全文