当有目标变量时,在strcat,strcopy,(etc)中返回char*的目的是什么?

Jak*_*oni 4 c string

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

char *strcat ( char *dest, const char *src );
Run Code Online (Sandbox Code Playgroud)

并不是

void strcat ( char *dest, const char *src );
Run Code Online (Sandbox Code Playgroud)

甚至只是通过做返回结果

char *strcat (const char *src );
Run Code Online (Sandbox Code Playgroud)

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

我正在审查一些c编程的东西,不能相信我忘记了多少!

Alo*_*ave 6

为了便于使用,这些函数可以在更大的表达式中使用或者可以嵌套.

就像是:

strcat(path, strcpy(file, "foo.txt")); 
Run Code Online (Sandbox Code Playgroud)

要么

printf("[%s]\n", strcat(string1, string2));
Run Code Online (Sandbox Code Playgroud)

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