6

ばかげているが簡単な質問:出力を格納する変数がパラメーターリストにあるのに、fgets、strcpy、strcatなどのcスタイルの文字列で動作する一部の関数が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 に答える