鱼C论坛

 找回密码
 立即注册
查看: 909|回复: 7

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

[复制链接]
发表于 2020-7-12 16:28:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大佬们看看错在哪 运行不了
#include<stdio.h>
void main()
{
   char c;
   char str[80];
    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[i]!='\0';i++)
        {
            if(str[i]!=c)
                str[j++]=str[i];
        }
        str[j]='\0';
}
void pr(char str)
{
  printf("%s\n",str);
}

最佳答案
2020-7-12 16:57:45
本帖最后由 sunrise085 于 2020-7-12 16:58 编辑
有梦想大蜗牛 发表于 2020-7-12 16:48
大佬能解释下
str[j]='\0';
是什么意思吗?


'\0'是字符串结束字符。
直接输入字符串的话,程序会在末尾添加结束字符,但是你这是修改字符串了就需要手动添加该字符,当你用%s进行printf 的时候,遇到'\0',程序就认为该字符串结束了,实际上之后还有内容只是不再打印了。
举个例子:
原字符串:abcdaaaabcd,在内存中实际存放的是a  b  c  d  a  a  a  a  b  c  d  \0
删除字符a之后,实际存放的是b  c  d  b  c  d  \0  a  b  c  d  \0
当用%s打印的时候,遇到'\0',程序就认为该字符串已经结束了。后面的就不再打印了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-12 16:39:43 | 显示全部楼层
最后一个函数写错了
void pr(char str)

应该写成
  1. void pr(char str[])
复制代码

你漏掉了中括号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-12 16:46:42 | 显示全部楼层
顺求大佬告知
str[j]='\0';
是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-12 16:48:50 | 显示全部楼层
sunrise085 发表于 2020-7-12 16:39
最后一个函数写错了

应该写成

大佬能解释下
str[j]='\0';
是什么意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 16:57:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-7-12 16:58 编辑
有梦想大蜗牛 发表于 2020-7-12 16:48
大佬能解释下
str[j]='\0';
是什么意思吗?


'\0'是字符串结束字符。
直接输入字符串的话,程序会在末尾添加结束字符,但是你这是修改字符串了就需要手动添加该字符,当你用%s进行printf 的时候,遇到'\0',程序就认为该字符串结束了,实际上之后还有内容只是不再打印了。
举个例子:
原字符串:abcdaaaabcd,在内存中实际存放的是a  b  c  d  a  a  a  a  b  c  d  \0
删除字符a之后,实际存放的是b  c  d  b  c  d  \0  a  b  c  d  \0
当用%s打印的时候,遇到'\0',程序就认为该字符串已经结束了。后面的就不再打印了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 17:09:12 From FishC Mobile | 显示全部楼层
如果是c语言,可以改成:void pr(char *str){}。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢大佬懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 21:24:50 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 18:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表