c语言 在字符串中删除与某字符相同的字符 急!

各位大神好!!!
我这个一运行,不等我输入字符,程序就结束了,是怎么回事呢!!!先谢谢了!!
#include <stdio.h>
void shanchu(char *a,char word);
void main()
{
char a[80]; char word;
printf("Input a string : ");
scanf_s("%s", a);
printf("Input a character : ");
scanf_s("%c", &word);
shanchu(a, word);
printf("%s", a);
}
void shanchu(char *a, char word)
{
int j = 0;
for (; *a != '\0'; a++)
{
if (*a != word)
{
*a = a[j];
}
j++;
}
*a = '\0';
}

#include <stdio.h>
#include <stdlib.h>

void shanchu(char *a,char word);
void main() {
char a[80]; char ch;
printf("Input a string : ");
gets(a); 
printf("Input a character : ");
scanf("%c", &ch);
shanchu(a, ch);
printf("%s\n", a);
}
void shanchu(char *a, char word) {
int i,j;
for (i = 0; a[i]; ++i) {
if(a[i] == word) {
for(j = i; a[j]; ++j)
a[j] = a[j + 1];
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-23
scanf_s("%s", a); 
printf("Input a character : ");
scanf_s("%c", &word);

输入字符串最后有一个回车,被下面的输入字符读取了,因此结束,
改为scanf_s(" %c", &word);

第2个回答  2019-07-21
方法1:把要删除的字符后面的字符依次前移一位覆盖前面的字符即可.
方法2:建立另一个字符数组,将要删除的字符之后的字符复制到这个新数组,然后再将新数组中的字符复制到原数组中从要删除的字符开始的位置即可.
第3个回答  推荐于2016-09-25
scanf_s("%s", a); 
printf("Input a character : ");

改为:

scanf_s("%s", a); 
getchar();
printf("Input a character : ");

因为当把a字符串输完后,你会按回车键,但回车键也算一个字符。

它被读入到了字符word中。

追问

恩恩,,结果也错了貌似。。。

追答

那是你的算法的问题,这应该你自己想办法解决。

本回答被提问者和网友采纳
第4个回答  2017-06-24
scanf_s(" %c", &word); 这句话%c前面加一句空格,像我这样