| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:一个字符串查找函数(据说就是自己重写库函数strpbrk)这是c和指针的一道作 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:20 回复次数:7 
一个字符串查找函数(据说就是自己重写库函数strpbrk)这是c和指针的一道作业题,望大牛点评一下,俺不怕批评
程序代码:
#include<stdio.h>
//a、在source中查找是否有存在chars集合中的任一字符 有则返回指向该字符的指针,否则返回NULL
//b、不得使用任何操作字符串的库函数
//c、不能使用下标(也就是不能使用数组)
//d、函数形参和返回值已固定,不得更改
char* find_char(char const *source,char const *chars)
{
    char * ret=NULL;
    char const * p_s=source;
    while(*chars)
    {
        while(*source)
        {
           if(*source==*chars)
           {
               //调试中,曾遇到了char * 和char const *不能互相赋值的错误
               //后来加了强制转换,也不知道这样是否正确
               ret=(char*)source;
               goto _exit;
           }
           *source++;
        }
        source=p_s;
        *chars++;
    }
_exit:
    return ret;
}
int main()
{
    char * a="abcd";
    char * b="xyzbi";
    //a字符串中包含b字符串里的'b',所以函数返回指向bcd的指针
    //感觉是符合题目要求了
    char *c=find_char(a,b);
    printf("%s\n",c);
    return 0;
} 
搜索更多相关主题的帖子: 点评 source 字符串 color 
2012-11-29 20:47
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:5 
先来看看。。。还没到这水平的。。。

有心者,千方百计;无心者,千难万难。
2012-11-29 22:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
//比较2个字符串大小
//返回0则相等 返回1 则a>b  返回-1 则a<b
int intcmp(char *a,char *b)
{
    int ret=0;
    while(*a!=NULL && *b!=NULL)
    {
        if(*a>*b)
        {
            ret=1;
            goto _exit;
        }
        if(*a<*b)
        {
            ret=-1;
            goto _exit;
        }
        *a++;
        *b++;
        if(*a!=NULL && *b==NULL) ret=1;
        if(*b!=NULL && *a==NULL) ret=-1;
    }
_exit:
   return ret;
}
又写了一个字符串比较函数

[ 本帖最后由 wp231957 于 2012-11-30 06:31 编辑 ]

DO IT YOURSELF !
2012-11-30 06:24
laoA
Rank: 2
等 级:论坛游民
帖 子:24
专家分:59
注 册:2012-11-18
收藏
得分:5 
#include<stdio.h>
//a、在source中查找是否有存在chars集合中的任一字符 有则返回指向该字符的指针,否则返回NULL
//b、不得使用任何操作字符串的库函数
//c、不能使用下标(也就是不能使用数组)
//d、函数形参和返回值已固定,不得更改
char* find_char(char const *source,char const *chars)
{
    char * ret=NULL;
    char const * p_s=source;
    while(*chars)
    {
        while(*source)
        {
           if(*source==*chars)
           {
               //调试中,曾遇到了char * 和char const *不能互相赋值的错误
               //后来加了强制转换,也不知道这样是否正确
               ret=(char*)source;
               goto _exit;//为什么要用goto呢,不能直接return吗???
           }
           *source++;
        }
        source=p_s;
        *chars++;
    }
_exit:
    return ret;
}
int main()
{
    char * a="abcd";
    char * b="xyzbi";
    //a字符串中包含b字符串里的'b',所以函数返回指向bcd的指针
    //感觉是符合题目要求了
    char *c=find_char(a,b);
    printf("%s\n",c);
    return 0;
}
2012-11-30 16:14
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用laoA在2012-11-30 16:14:32的发言:

               ret=(char*)source;
               goto _exit;//为什么要用goto呢,不能直接return吗???
_exit:
    return ret;
}
你说的有道理
我习惯了 那个代码我看着舒服  流程特清晰  嘿嘿

DO IT YOURSELF !
2012-11-30 16:23
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:5 
面试的时候 比较喜欢出类似的题目
2012-11-30 16:39
c语言DYY
Rank: 2
等 级:论坛游民
帖 子:51
专家分:44
注 册:2012-10-21
收藏
得分:5 
收藏
2012-11-30 20:31
xep007
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2010-5-29
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
char *find_char (char const *source, char const *chars);
int main(int argc, char *argv[])
{
    char *a = "abcd";   
    char *b = "xyzbi";
    char *c =  find_char(a, b);
    printf ("%s\n", c);
   
    return 0;
}
/*第一种用while
char *find_char (char const *source, char const *chars)
{
    while (*source++)
    {
        while (*chars++)
        {
            if (*chars == *source)
                return source;
        }
    }
    return NULL;
}
*/也可以用for
char *find_char (char const *source, char const *chars)
{
    for (; *source++;)
        for (; *chars++;)
        {
            if (*chars == *source)
                return source;
        }
    return NULL;
}
2013-04-07 20:25
快速回复:一个字符串查找函数(据说就是自己重写库函数strpbrk)这是c和指针的一 ...
数据加载中...
 
   



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

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