标题:判断一个字符是否在字符串中,是的话返回1,否则返回0;
只看楼主
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
结帖率:100%
已结贴  问题点数:20 回复次数:11 
判断一个字符是否在字符串中,是的话返回1,否则返回0;
无论输入什么都返回1,请大神看看哪里有问题。谢谢
代码如下:
#include<stdio.h>
int is_within(char c,char *str);
int main(void)
{
    char arr[30]="I am a boy,come on!";
    char ch;
   
    while((ch=getchar())!=EOF)
    {
        if(ch=='\n')continue;
        is_within(ch,arr);
        printf("%d\n",is_within(ch,arr));
    }
    printf("Done!\n");
   
    return 0;
}

int is_within(char c,char *str)
{
   while((*str++)!=EOF)
   {
         if(*str==c)
        return true;
   }
return false;
}
搜索更多相关主题的帖子: 判断 字符串 返回 char str 
2017-08-15 18:32
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:5 
int is_within(char c,char *str)
{
   for(; *str != '\0'; ++str )
   {
         if(*str==c)
        return true;//另外你没有调用stdbool.h,这个true和下面的false是个什么意思?你到底看的什么书?如果是c primer plus,那么你该好好看看第一章节。
   }
return false;
}


PS:你的这个问题和上个问题都很奇葩,明明书上有很详细的解释。完全搞不懂你是怎么看的书。

[此贴子已经被作者于2017-8-15 18:56编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-08-15 18:49
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:5 
程序代码:
int is_within(char c,char *str)
{
    while((*str)!='\0')    //字符串的结束标志是'\0',EOF(end of file)表示文件结束, 使用*str++没有匹配到第一个字母
    {
        if(*str==c)
            return true;
        str++;
    }
    return false;
}
2017-08-15 18:59
悟爱
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:45
注 册:2017-7-20
得分:5 
把EOF 改成 '\0'
2017-08-15 19:15
悟爱
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:45
注 册:2017-7-20
得分:0 
还有你没有把空格除掉,输入空格也是会返回1
2017-08-15 19:19
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
得分:0 
回复 3楼 ldsh304
没有匹配到第一个字母是什么意思啊
2017-08-15 19:58
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
得分:0 
回复 2楼 renkejun1942
是循环的while写的不对吗?是*str++还是后面的EOF出错了啊
2017-08-15 20:00
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:0 
回复 6楼 zzdloveclp
当进入循环后,先判断*str是否为'\n',然后str++,
在执行条件时,第一次就比较的是str[1],而第一次字符没有比较

你可以在循环中直接打印*str,就可以明白了

[此贴子已经被作者于2017-8-15 20:13编辑过]

2017-08-15 20:11
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
得分:0 
回复 8楼 ldsh304
嗯嗯,是的,感谢感谢,明白了。
2017-08-15 20:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
int is_within(char c,char *str)
{
    while(*str && (*str++)!=c) NULL;
    return !!*str;
}
2017-08-15 20:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480072-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.540005 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved