• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

《C和指针》章节后编程练习解答参考——6.1

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

《C和指针》——6.1

6.1

题目:

  编写一个函数,在一个字符串中进行搜索,查找另一子字符串中出现的字符。

函数原型如下:

  char *find_char(char const *source, char const *chars);

要求:

  a.不适用任何用于操纵字符串的库函数(如:strcpy strcmp等)

  b.函数中不能使用下标引用

解答代码:

#include <stdio.h>

char *find_char(char const *source, char const *chars)
{
    int i, j;
    if ((*source != NULL) && (*chars != NULL))
    {
        for (j=0; *(source+j) != '\0'; j++)
        {
            for (i=0; *(chars+i) != '\0'; i++)
            {
                if (*(source+j) == *(chars+i))
                {
                    printf("i = %d\n", j);
                    return ((char *)(source+j));    //注:source类型为(char const *),函数类型为(char *),返回时需要进行强制类型转换
                }
            }
        }
        return NULL;
    }
    else
        return NULL;
}

int main()
{
    char source[] = "ABCDEB";
    char chars[] = "EF";

    char *p = find_char(source, chars);

    if (p != NULL)
    {
        printf("Find the substr at %d\n", p-source);
    }
    else
        printf("Substr no found!");

    getchar();
    return 0;
}

注:

1、函数中使用双层循环查询对比,外层用于source数据循环,内层用于子字符串数据循环,逐一进行对比。

2、函数定义参数类型为(char const *)和返回值类型(char *)不一致,不能直接返回,必须进行类型强制转换((char *)(source+j))。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
初读CLRViaC#之IL、CTS、CLS发布时间:2022-07-18
下一篇:
C#VS2005打开没问题,但是运行解决方案时就整个自动关闭了发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap