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、最后就给大家完整的看一下整体的一个代码流程。
#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); //输出
}
逻辑没什么问题,但是有一点需要注意
在c中,这个也许是个小bug,可以这么认为
那就是回车也是字符,会被要求输入字符的地方所吸收,也就是把上一个输入的回车当成这个字符的输入,那么这个字符的输入也就是回车符了,不会再接受你想要的输入
解决的办法由两个:一个是吸收掉这个回车;一个是情理一下缓存,把回车清理掉
吸收,用getchar函数
清理,用fflush(stdin);函数
你这个程序的scanf是字符输入,可能没有接收你想要的字符,而是把gets的回车接收了