免费注册 查看新帖 |

Chinaunix

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

[函数] 看别人的一个函数很费解,求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-13 10:18 |只看该作者 |倒序浏览
这是个字符串转小写的函数,哪个static char的是个L,我的editplus里看起来和1查不多,晕四了,很奇怪那句转的过程,莫非有什么深意?


  1.                                                           Function codes
  2. ---------------------------------------------------------------------------*/


  3. /*-------------------------------------------------------------------------*/
  4. /**
  5.   @brief        Convert a string to lowercase.
  6.   @param        s        String to convert.
  7.   @return        ptr to statically allocated string.

  8.   This function returns a pointer to a statically allocated string
  9.   containing a lowercased version of the input string. Do not free
  10.   or modify the returned string! Since the returned string is statically
  11.   allocated, it will be modified at each function call (not re-entrant).
  12.   
  13. */
  14. /*--------------------------------------------------------------------------*/

  15. char * strlwc(char * s)
  16. {
  17.     static char l[ASCIILINESZ+1];
  18.     int i ;

  19.     if (s==NULL) return NULL ;
  20.     memset(l, 0, ASCIILINESZ+1);
  21.     i=0 ;
  22.     while (s[i] && i<ASCIILINESZ) {
  23.         l[i] = (char)tolower((int)s[i]);

  24. //不知道这为什么要(int),s[i]如果是字母,那怎么int?

  25.         i++ ;
  26.     }
  27.     l[ASCIILINESZ]=(char)0;
  28.     return l ;
  29. }

复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-07-13 10:24 |只看该作者

看别人的一个函数很费解,求助

因为tolower的参数是int类型。
你不知道char怎么向int转换吗?

论坛徽章:
0
3 [报告]
发表于 2004-07-13 10:27 |只看该作者

看别人的一个函数很费解,求助

而且函数原形是这样,更是费解
int tolower(int c);
小弟新手,盼高手祥解,谢谢

论坛徽章:
0
4 [报告]
发表于 2004-07-13 10:28 |只看该作者

看别人的一个函数很费解,求助

不怎么样,还有字符串长度限制。

论坛徽章:
0
5 [报告]
发表于 2004-07-13 10:30 |只看该作者

看别人的一个函数很费解,求助

真的不太清楚char是和int怎么转的,如果都是数字还好,如果是字母会转成字母代表的数字,然后在用前面的(char)转回去吗 ?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-07-13 10:47 |只看该作者

看别人的一个函数很费解,求助

你可以把char看作int的一个子集。
如果还不明白,需要看c语言教材。
K&R的,我记得前面讲的就有这些。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-07-13 12:36 |只看该作者

看别人的一个函数很费解,求助

char和int本质是一样的,不过是一个大一个小而已。

论坛徽章:
0
8 [报告]
发表于 2004-07-14 10:35 |只看该作者

看别人的一个函数很费解,求助

感谢各位的解答,看了看书有,能够理解点了,谢谢

论坛徽章:
0
9 [报告]
发表于 2004-07-14 10:51 |只看该作者

看别人的一个函数很费解,求助

说句实话,代码写的一般,好像是写惯了java的人写的。

1. memset(l, 0, ASCIILINESZ+1) 纯属浪费,最后补个0就可以了。
2. s 这种方式,效率极低,只有没有指针的语言才这样写。c的通用写法是直接p++
3. 返回值就不说什么了,函数参数的原型应该是const char* s,否则在某些调用的时候,还要强制类型转换。

论坛徽章:
0
10 [报告]
发表于 2004-07-14 16:06 |只看该作者

看别人的一个函数很费解,求助

http://ndevilla.free.fr/iniparser/
我是用了他的一个库,想读读代码少的别人的程序学习一下,呵呵,看来找错对象了,楼上的能否指点一下读什么的比较好?不要apache源码和内核什么的,我还读不了那么大的,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP