#include <stdio.h>
#include <string.h>
void delete(int str_len,int str2_len,char*str,char*str2,char*result)
{
if (str_len < str2_len) {
printf("Error!\n");
}
while (*str != '\0') {
if (strncmp(str, str2, str2_len) != 0) {
*result++ = *str++;
}
else
{
str += str2_len;
}
*result = '\0';
}
}
void insert(int str_len, int str2_len, char*str, char*str2, int x)
{
for (int i = str_len - 1; i >= x; --i) {
*(str + i + str2_len) = *(str + i);
}
for (int n = 0; n < str2_len;n++) {
*(str + x + n) = *str2++;
}
*(str + str_len + str2_len) = '\0';
}
void search(int str_len,int str2_len,char *str, char *str2)
{
int i=0;
if (str_len < str2_len) {
printf("Error!\n");
}
while((*str != '\0')&&( *(str + str2_len) != '\0'))
{
if (strncmp(str, str2, str2_len) != 0) {
str++;
i++;
}
else
{
printf("%d\n", i);
str += str2_len;
i += str2_len;
}
}
}
int main()
{
char k;
char str[1000] = { 0 };
char str2[1000] = { 0 };
char result[1000] = { 0 };
int str_len;
int str2_len;
printf("请输入字符串\n");
gets(str);
str_len = strlen(str);
printf("请输入命令\n1-删除字符串\n2-插入字符串\n3-查找字符串\nQ-退出\n");
scanf("%c", &k);
while (k != 'Q') {
getchar();
switch (k)
{
case '1':
printf("请输入将被删除的字符串\n");
gets(str2);
str2_len = strlen(str2);
delete(str_len, str2_len, str, str2, result);
puts(result);
break;
case '2':
printf("请输入将插入的字符串\n");
gets(str2);
printf("请输入要插入的位置\n");
int x;
scanf("%d", &x);
str2_len = strlen(str2);
insert(str_len, str2_len, str, str2, x);
puts(str);
break;
case '3':
printf("请输入要查找的字符串\n");
gets(str2);
str2_len = strlen(str2);
search(str_len, str2_len, str, str2);
break;
default:
printf("输入的命令错误\n");
break;
}
system("pause");
printf("请输入字符串\n");
gets(str);
printf("请输入命令\n1-删除字符串\n2-插入字符串\n3-查找字符串\nQ-退出\n");
scanf("%c", &k);
}
return 0;
}
TEXT_EDITOR
最新推荐文章于 2024-10-13 17:13:37 发布