有梦想大蜗牛 发表于 2020-7-12 16:28:43

有一个字符串,内有若干字符,要求输入一个字符,程序便将字符串中该字符删去

求大佬们看看错在哪 运行不了
#include<stdio.h>
void main()
{
   char c;
   char str;
    void est(char str[]);
    void dst(char str[],char c);
    void pr(char str[]);
    est(str);
   scanf("%c",&c);
        dst(str,c);
        pr(str);
}
void est(char str[])
{
gets(str);
}
void dst(char str[],char c)
{
        int i,j;
        for(i=j=0;str!='\0';i++)
        {
          if(str!=c)
                str=str;
        }
        str='\0';
}
void pr(char str)
{
printf("%s\n",str);
}

sunrise085 发表于 2020-7-12 16:39:43

最后一个函数写错了
void pr(char str)
应该写成
void pr(char str[])
你漏掉了中括号

有梦想大蜗牛 发表于 2020-7-12 16:46:42

顺求大佬告知
str='\0';
是什么意思

有梦想大蜗牛 发表于 2020-7-12 16:48:50

sunrise085 发表于 2020-7-12 16:39
最后一个函数写错了

应该写成


大佬能解释下
str='\0';
是什么意思吗?

sunrise085 发表于 2020-7-12 16:57:45

本帖最后由 sunrise085 于 2020-7-12 16:58 编辑

有梦想大蜗牛 发表于 2020-7-12 16:48
大佬能解释下
str='\0';
是什么意思吗?

'\0'是字符串结束字符。
直接输入字符串的话,程序会在末尾添加结束字符,但是你这是修改字符串了就需要手动添加该字符,当你用%s进行printf 的时候,遇到'\0',程序就认为该字符串结束了,实际上之后还有内容只是不再打印了。
举个例子:
原字符串:abcdaaaabcd,在内存中实际存放的是abcdaaaabcd\0
删除字符a之后,实际存放的是bcdbcd\0abcd\0
当用%s打印的时候,遇到'\0',程序就认为该字符串已经结束了。后面的就不再打印了

quark 发表于 2020-7-12 17:09:12

如果是c语言,可以改成:void pr(char *str){}。

有梦想大蜗牛 发表于 2020-7-12 17:12:48

sunrise085 发表于 2020-7-12 16:57
'\0'是字符串结束字符。
直接输入字符串的话,程序会在末尾添加结束字符,但是你这是修改字符串了就需 ...

谢谢大佬懂了

liuzhengyuan 发表于 2020-7-12 21:24:50

https://s1.ax1x.com/2020/07/05/UpAthV.gif
页: [1]
查看完整版本: 有一个字符串,内有若干字符,要求输入一个字符,程序便将字符串中该字符删去