| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4249 人关注过本帖
标题:判断一个字符是否在字符串中,是的话返回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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
int is_within(char c,char *str)
{
    while(*str && (*str++)!=c) NULL;
    return !!*str;
}
2017-08-15 20:43
快速回复:判断一个字符是否在字符串中,是的话返回1,否则返回0;
数据加载中...
 
   



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

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