免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2584 | 回复: 13
打印 上一主题 下一主题

写的一个查找字符串的小程序,请老大们拍砖 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-28 13:14 |只看该作者 |倒序浏览
学习C程序中,不知道有什么地方写的不好,不符合规范,请老大们指教



  1. int instr(char *string, char *t_str, int start_pos)
  2. {
  3.     int scnt,dcnt,ret = -1;
  4.    
  5.     if( (string == NULL) || (t_str == NULL) ) return -1;

  6.     for(scnt = 0, dcnt = 0;
  7.         (*(string + scnt) != '\0' && *(t_str + dcnt) != '\0') || (ret < start_pos);
  8.         scnt ++)
  9.     {
  10.         if(dcnt == 0) ret = scnt;
  11.         if(*(t_str + dcnt) == *(string + scnt))
  12.         {
  13.             dcnt ++;
  14.         }else
  15.         {
  16.             dcnt = 0;
  17.         }
  18.     }
  19.     if( (ret == 0 && dcnt == 0) || (*(t_str + dcnt) != '\0') ) return -1;
  20.     return ret;
  21. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-02-28 15:43 |只看该作者
是在string 的第start_pos处开始查找t_str吗?

论坛徽章:
1
2015小元宵徽章
日期:2015-03-06 15:57:20
3 [报告]
发表于 2007-02-28 15:44 |只看该作者
原帖由 思一克 于 2007-2-28 15:43 发表
是在string 的第start_pos处开始查找t_str吗?

第一个问题:没有注释或者方法签名不直观。

论坛徽章:
0
4 [报告]
发表于 2007-02-28 15:56 |只看该作者
俺喜欢函数名是动词开头,
而不是形容词或副词或名词

论坛徽章:
0
5 [报告]
发表于 2007-02-28 16:04 |只看该作者
乱说几句,别拍转。

1 函数,变量名命名不直观
2 注释没有
3 作为输入参数的字符串推荐用const char*
4 scnt,dcnt这两个变量用char*就没有那么多的t_str + dcnt,string + scnt吧
5 for循环里面的逻辑和函数返回值得处理有更简明的方式。

论坛徽章:
0
6 [报告]
发表于 2007-02-28 16:23 |只看该作者
怎么不用函数strstr来做,即简单又明了。

论坛徽章:
0
7 [报告]
发表于 2007-02-28 16:55 |只看该作者
感谢感谢~~
没有写注释是我写程序的一个很大的缺点,以后一定注意!

之所以用instr作为名称,是因为以前用vb很多,vb里面有这样一个函数,所以就照样写了一个

不用strstr是因为做嵌入式开发,不能过分依赖库,呵呵

const char*,呵呵,非常有道理,受教~ 不用char*定义scnt是因为我要获取位置,否则还要倒过来计算偏移

论坛徽章:
0
8 [报告]
发表于 2007-02-28 17:07 |只看该作者
LZ,
做嵌入式开发更不能用你编的这样的函数。反而要用strstr, strcpy等。因为你这样的函数,可靠性,错误,尺寸等和库函数比都不行。

论坛徽章:
0
9 [报告]
发表于 2007-02-28 17:17 |只看该作者
原帖由 思一克 于 2007-2-28 17:07 发表
LZ,
做嵌入式开发更不能用你编的这样的函数。反而要用strstr, strcpy等。因为你这样的函数,可靠性,错误,尺寸等和库函数比都不行。


但是未必会有这样的库函数存在啊,如果不是标准的C函数库

论坛徽章:
0
10 [报告]
发表于 2007-02-28 17:22 |只看该作者
LZ,

用strstr等来写。而不要自己从头写更可靠更节省。

还有,连接库函数未必连接整个库。
还有一个方法,将strstr的原程序直接你自己用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP