删除字符串中的指定字符,字符串和要删除的字符均由键盘输入 求程序解答

2025-04-03 01:40:21
推荐回答(3个)
回答1:

1、程序里面涉及到了输出和输入字符串以及字符。#include

2、定义两个相同容量的字符串储存的变量 char a[100];  char b[100];。以及整数变量 int c;  int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。

3、 printf("请输入你的字符串");  scanf("%s",a);  printf("请输入你想要删除第几位字符");  scanf("%d",&c);。

4、 for(i=0;i

5、只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。

6、最后就给大家完整的看一下整体的一个代码流程。

回答2:

#include
void main()
{
char str[80],ch;
int i,k=0;
gets(str); //输入字符串 放入str[]
scanf("%c",&ch);//输入要删除字符 放在ch
for(i=0;str[i];i++) //循环到字符串结束为止
if(str[i]!=ch) //假如没找到就将原字符赋值过去 找到要删除的就跳过继续找
{
str[k]=str[i];//(此处还是很不错的,在同一个数组中操作,后面的字符覆盖了前面要删除的位置)
k++;
}
str[k]='\0';//在新字符串结尾处加结束符
puts(str); //输出
}

回答3:

逻辑没什么问题,但是有一点需要注意
在c中,这个也许是个小bug,可以这么认为
那就是回车也是字符,会被要求输入字符的地方所吸收,也就是把上一个输入的回车当成这个字符的输入,那么这个字符的输入也就是回车符了,不会再接受你想要的输入

解决的办法由两个:一个是吸收掉这个回车;一个是情理一下缓存,把回车清理掉
吸收,用getchar函数
清理,用fflush(stdin);函数

你这个程序的scanf是字符输入,可能没有接收你想要的字符,而是把gets的回车接收了