#include<stdio.h>
#include<string.h>
int main()
{
int n = 0;
scanf("%d", &n);
char str1[1000];
gets(str1);
while (n--)//n组测试
{
int m = 0;
scanf("%d", &m);
switch (m)//后接插入
{
case 1:
{
char str2[1000] = { '\0' };
gets(str2);
strcat(str1, str2);
puts(str1);
}
case 2://截取a,b的字符串
{
int a, b;
scanf("%d%d", &a, &b);//
char temp2[1000] = { '\0' };
for (int i = a; i <= b; i++)
temp2[i-a] = str1[i];
char str1[1000] = {'\0' };
strcpy(str1, temp2);
puts(str1);
}
case 3://插入片段在文章第a个字符前面插入
{
int a = 0;
scanf("%d", &a);
char str3[1000] = { '\0' };
gets(str3);
int len_str1 = strlen(str1);
int len_str3 = strlen(str3);
char temp3[1000] = { '\0' };
for (int i = 0; i < a - 1; i++)
{
temp3[i] = str1[i];
}
strcat(temp3, str3);
for (int i = a + len_str3 - 2; i < len_str3 + len_str1; i++)
{
temp3[i] = str1[i - len_str3 + 2];
}
puts(str1);
}
case 4://查找
{
char str4[1000] = { '\0' };
gets(str4);
char* ret = strstr(str1, str4);
printf("%s",ret);
}
}
}
return 0;
}
想要进入循环,你要先输入n呀
把 gets(str1); 改成 scanf("%s", str1);
下面的gets也都改下
错误修改如下,功能上还需完善,供参考:
#include<stdio.h>
#include<string.h>
int main()
{
int n = 0;
scanf("%d", &n);
getchar(); //修改
char str1[1000];
gets(str1);
while (n--)//n组测试
{
int m = 0;
scanf("%d", &m);
getchar();
switch (m)//后接插入
{
case 1://if (m == 1) //修改
{
char str2[1000] = { '\0' };
gets(str2);
strcat(str1, str2);
puts(str1);
}
break; //修改
case 2://else if (m == 2)//截取a,b的字符串 //修改
{
int a, b;
scanf("%d%d", &a, &b);
getchar(); //修改
char temp2[1000] = { '\0' };
for (int i = a; i < a + b; i++) //修改
temp2[i - a] = str1[i];
//char str1[1000] = { '\0' }; //修改
strcpy(str1, temp2);
puts(str1);
}
break; //修改
case 3: //else if (m == 3)//插入片段在文章第a个字符前面插入 //修改
{
int a = 0;
scanf("%d", &a);
getchar(); //修改
char str3[1000] = { '\0' };
gets(str3);
int len_str1 = strlen(str1);
int len_str3 = strlen(str3);
char temp3[1000] = { '\0' };
for (int i = 0; i < a - 1; i++)
{
temp3[i] = str1[i];
}
strcat(temp3, str3);
for (int i = a + len_str3 - 2; i < len_str3 + len_str1; i++)
{
temp3[i] = str1[i - len_str3 + 2];
}
puts(str1);
}
break; //修改
case 4: //else if (m == 4)//查找 //修改
{
char str4[1000] = { '\0' };
gets(str4);
char* ret = strstr(str1, str4);
printf("%s", ret);
}
break; //修改
}
}
return 0;
}