6

只是一个愚蠢但快速的问题:为什么在存储输出的参数列表中有一个变量时,一些使用 c 样式字符串的函数(例如:fgets、strcpy、strcat 等)的返回类型为 char*?即,为什么会这样:

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

并不是

void strcat ( char *dest, const char *src );

甚至只是通过执行返回结果

char *strcat (const char *src );

我的意思是我可以看到如果您嵌套调用这些函数(这很危险),这将是多么有用,但我不明白为什么您需要同时拥有目标变量并返回结果......

我正在回顾一些 c 编程的东西,不敢相信我忘记了多少!

4

2 回答 2

8

为了方便使用,让这些函数可以用在更大的表达式中,也可以嵌套使用。

就像是:

strcat(path, strcpy(file, "foo.txt")); 

或者

printf("[%s]\n", strcat(string1, string2));

不用说,这些用法可以而且应该避免。

于 2012-05-07T04:19:10.203 回答
0

在某些情况下,通过检查 NULL 的返回值还可以指示函数是否成功。然而,不一定是理想的做法。

于 2012-05-07T06:23:34.540 回答