求租c语言高手帮我解决

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:58:40
我运行后结果出错,帮我看看

//编写函数char_search(char str[],char c),
//功能是删除str[]字符中所有的字符变量C。
#include <stdio.h>
#include <string.h>
void char_search(char str[], char c)
{
char *p=str;
do
if (*str!=c)
*p++=*str;
while (*str++);
printf("%s\n",str);
}
void main()
{
char str[5];char c;
scanf("%s",str);
char_search(str,c);
}

只有2个错误,
第一:你没有输入字符给字符变量C
第二:printf("%s\n",str); 不能放到函数里,要放到main函数里。
修改后的程序#include <stdio.h>
#include <string.h>
void char_search(char str[], char c)
{
char *p=str;
do
if (*str!=c)
*p++=*str;
while (*str++);

}
void main()
{
char str[5];char c;
scanf("%c",&c);
scanf("%s",str);
char_search(str,c);
printf("%s\n",str);
}
其他地方没有错误,只是数组最好设置大一点,5个字符的数组,最多输4个字符进去,多输入虽然也能做,但是越界是很危险的事。
====================================================================
看到不少人说逻辑有问题,或者没处理'\0',或者str指向NULL,其实这3个中前2个楼主用do...while循环做的,已经都处理了,根本就没有问题;只有最后打印的时候str指向的地址有问题,所以把打印语句移到主函数里就可以解决了。

十分明显,你的while循环应该在判断语句前面
即:
while(*str++ ){
if(*str!=c)
*p++=*str;
}

if (*str!=c)改成if (*str!='c')


printf("%s\n",str);

放到 main()