开启左侧

查找所有在一个给定字符集合中出现的字符

二维码 [复制链接]
180 0
请编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符。这个函数的原型如下:
Char *find_char(char const *sourc, char const *chars);

它的基本想法是查找source字符中匹配chars字符串中任何字符的第一个字符,函数然后返回一个指向source中第一个匹配所找到的位置的指针。如果source中的所有字符均不匹配chars中的任何字符,函数就返回一个NULL指针,如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数也返回一个NULL指针。

举个例子:假定source指向ABCDEF,如果chars指向XYZ,函数就返回一个NULL指针 ,如果chars指向XRCQEF,函数就返回一个指向source中C字符的指针。参数所指向的字符串是绝不会被修改的。

说明:C函数库中存在一个名叫strpbrk的函数,它的功能几乎和这个你要编写的函数一模一样。但这个程序的目的是让你自己练习操纵指针,所以必须做到下面两点:
A、你不应该使用任何用于操纵字符串的库函数(如strcpy,strcmp等)
B、函数中任何地方都不应该使用下标引用。

参考答案:

  1. #include <stdio.h>
  2. /**
  3. * @brief find_char
  4. *
  5. * @Param: source
  6. * @Param: chars
  7. *
  8. * Returns:
  9. */
  10. char *find_char(const char *source, const char *chars)
  11. {
  12.     char *cp;

  13.     if( source != NULL && chars != NULL )
  14.     {
  15.         for(; *source != '\0'; source++ )
  16.         {
  17.             for( cp = chars; *cp!= '\0'; cp++ )
  18.             {
  19.                 if( *cp == *source )
  20.                     return source;
  21.             }
  22.         }
  23.     }
  24.     return NULL;
  25. }                                                         
  26. /**
  27. * @brief main
  28. *
  29. * @Param: argc
  30. * @Param: argv[]
  31. *
  32. * Returns:
  33. */
  34. int main(int argc,char *argv[])
  35. {
  36.     char *cp;

  37.     cp = find_char(argv[1],argv[2]);

  38.     if(cp == NULL)
  39.     {
  40.         printf("Not found chars in source!\n");
  41.         return 0;
  42.     }
  43.     else
  44.     {
  45.         printf("%s\n",cp);
  46.     }
  47.     return 0;
  48. }
复制代码



赞助本站





上一篇:输出指定图形
下一篇:传染病问题
学会善用【论坛搜索】功能,很多你要寻找的答案就在这里面;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

发新帖 回复

104

主题

104

帖子

233

街币
更多

精彩推荐

新人报到专用贴
新人报到专用贴
==新人报道格式(选填)== 【我的昵称】: 【我的性别
爱好街资源共享区文件解压密码
爱好街资源共享区文件解压密码
因本站分享的文件实在太多,目前收集整理已经接近4T,所以有些文
独立团VIP教程第1-7版全套打包下载(含课件源码工具等)
独立团VIP教程第1-7版全套打包
独立团第1版易语言教程 独立团第一版1易语言入门 1-1-1外
爱好街链接地址失效有奖报错
爱好街链接地址失效有奖报错
我们的成长离不开大家的支持!! 各位爱好街的会员:
魔鬼作坊vip教程辅助制作培训之零基础绝密汇编语言入门课程
魔鬼作坊vip教程辅助制作培训
这套课程为汇编入门教程,学习游戏逆向反汇编需要用到的基础知
万挂作坊教程+封包+E模块(全套下载)
万挂作坊教程+封包+E模块(全套
万挂-封包 封包加密解密-01 封包加密解密-02 封包加密

免责声明:
在爱好街发布的文章与主题属会员个人意见,与本站立场无关,文章内容由作者与爱好街享有相关版权,如需转载请注明出处或取得会员与本站的许可,否则本站将追究相应的法律责任,如部分内容有侵犯任何版权问题,请立即告知本站,本站将及时予以删除并致以最深的歉意。另外不得将本站内容用于商业或者非法用途,否则,一切后果请用户自负。

Mail To:MasTer@AiHaiJie.Com

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