免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: M.I.X
打印 上一主题 下一主题

[函数] 曾面试时被问:strcpy函数为什么要返回指针? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-07 13:01 |显示全部楼层
其实这个问题通过以上讨论已经有结论了。

要将strXXX, memXXX系列函数许多都返回dest一起看。

dest指针在c中代表字符串本身。而长度不代表字符串,仅仅是他的一个属性。

系列函数返回计算结果(dest)是理所当然的。使得函数可以做为EXPRESSION的一部分。

论坛徽章:
0
12 [报告]
发表于 2007-08-07 13:07 |显示全部楼层
在glibc 中(最精彩的C程序了,可以算是)

strcpy (stpcpy (stpcpy (fullname, fname), "/"), locnames[cnt]);

有许多。

我们平时很少用,不代表没有用。

论坛徽章:
0
13 [报告]
发表于 2007-08-07 15:36 |显示全部楼层
返回串尾?


原帖由 yg 于 2007-8-7 15:27 发表
这么简单的东西,一个sprintf就能完成,却写得如此晦涩,效率又低。这样的程序拿来玩玩还可以,没必要推崇。离最精彩的更是相去甚远。如果我的程序员在项目里这么写,挨批是免不了的。
而且stpcpy是非标的,返回 ...

论坛徽章:
0
14 [报告]
发表于 2007-08-07 16:28 |显示全部楼层
哪有返回末尾的?返回dest.

GLIBC的代码是一定是千锤百炼的。因为是给无数应用做基础的。

原帖由 flw 于 2007-8-7 15:37 发表

莫非你没注意到?

BTW:GNU 的代码,垃圾的也有很多。
glibc 也是一样。
我觉得你贴出来的那段代码就很垃圾。

论坛徽章:
0
15 [报告]
发表于 2007-08-07 16:59 |显示全部楼层
什么系统上? return end of dest?



NAME
       strcpy, strncpy - copy a string

SYNOPSIS
       #include <string.h>

       char *strcpy(char *dest, const char *src);

       char *strncpy(char *dest, const char *src, size_t n);

DESCRIPTION
       The  strcpy() function copies the string pointed to by src (including the terminating `\0'
       character) to the array pointed to by dest.  The strings may not overlap, and the destina

RETURN VALUE
       The strcpy() and strncpy() functions return a pointer to the destination string dest.

[ 本帖最后由 思一克 于 2007-8-7 17:04 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2007-08-07 17:16 |显示全部楼层
例子晕了,前面的例子还没有晕呀。

dest无非就是函数的“计算”结果,不返回它返回什么?和其他strXXX函数一起看,返回dest太自然不过的了。

论坛徽章:
0
17 [报告]
发表于 2007-08-07 17:29 |显示全部楼层
to flw,
也基本同意你说的。
但C的函数设计也是考虑的十分周到的。
无非是让一个函数有一个结果返回。因为C中函数是为主的,过程归类函数。

strcpy(buf, "12345")[0] = 'A';
strcat(strcpy(buf, "12345678"), "90abcdef");
printf("%s\n", strcpy(buf, "123435"));
printf(%s\n", strupr(buf, "akasklkls"));

strupr()一些地方没有,无论谁设计,不也都需要返回结果。

如果无返回,着实让使用着麻烦。

论坛徽章:
0
18 [报告]
发表于 2007-08-08 10:57 |显示全部楼层
一语中地了

原帖由 shangyilong 于 2007-8-8 10:53 发表
可以通过指针取得函数结果,便于进行其他处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP