#include <stdio.h> int main() { char str[100], sub[20], temp[100]; int choice, i, j, pos, len; printf("请输入一个字符串:"); gets(str); printf("输入的字符串为: %s\n", str); while (1) { printf("\n1. 增加子字符串\n"); printf("2. 删除子字符串\n"); printf("3. 修改子字符串\n"); printf("4. 退出\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入要增加的子字符串:"); scanf("%s", sub); i = strlen(str); j = 0; while (sub[j] != '\0') { str[i++] = sub[j++]; } str[i] = '\0'; printf("增加后的字符串为: %s\n", str); break; case 2: printf("请输入要删除的子字符串的位置和长度(用空格隔开):"); scanf("%d %d", &pos, &len); i = 0; while (i < pos) { temp[i] = str[i]; i++; } j = pos + len; while (str[j] != '\0') { temp[i++] = str[j++]; } temp[i] = '\0'; strcpy(str, temp); printf("删除后的字符串为: %s\n", str); break; case 3: printf("请输入要替换的子字符串的位置、长度和新字符串(用空格隔开):"); scanf("%d %d %s", &pos, &len, sub); i = 0; while (i < pos) { temp[i] = str[i]; i++; } j = 0; while (sub[j] != '\0') { temp[i++] = sub[j++]; } j = pos + len; while (str[j] != '\0') { temp[i++] = str[j++]; } temp[i] = '\0'; strcpy(str, temp); printf("替换后的字符串为: %s\n", str); break; case 4: return 0; default: printf("无效的选择,请重试。\n"); break; } } } 在此基础实现在任意位置增添字符串
时间: 2024-03-07 20:49:08 浏览: 172
可以在第一种情况(增加子字符串)的代码基础上稍作修改,让用户输入要插入的位置即可。
修改后的代码如下:
```c
case 1:
printf("请输入要增加的子字符串:");
scanf("%s", sub);
printf("请输入要插入的位置:");
scanf("%d", &pos);
i = strlen(str);
j = i - pos;
while (j >= 0) {
str[i + strlen(sub)] = str[i];
i--;
j--;
}
i = pos;
j = 0;
while (sub[j] != '\0') {
str[i++] = sub[j++];
}
printf("增加后的字符串为: %s\n", str);
break;
```
在这段代码中,我们首先让用户输入要插入的位置 `pos`,然后将字符串从插入位置开始的所有字符向后移动 `strlen(sub)` 个位置,腾出空间给新插入的子字符串。之后再将子字符串插入到指定位置即可。
相关问题
完成以下C语言代码功能:将主函数中输入的字符串反序存放。#include<stdio. h> #include<conio. h> #include(string. h> #define N 50 void fun(char *str, int n)
我可以提供一个示例代码:#include <stdio.h>
#include <string.h>int main ()
{
char str[100], temp;
int i, j; printf("输入一个字符串: ");
gets(str); j = strlen(str) - 1; for (i = 0; i < j; i++, j--)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
} printf("反序后的字符串: %s", str); return 0;
}
阅读全文