2012-05-07 3 views
4

愚かではあるが簡単な質問:fgets、strcpy、strcatなどのcスタイルの文字列で動作する関数のなかには、出力を格納する変数がパラメータリストにある場合にchar * ?つまり、なぜそれがある:目的変数があるときにstrcat、strcopy、(etc)にchar *を返す目的は何ですか?

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

なく

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

あるいは単に私が、私はあなたがしている場合、これは有用であろうか見ることができるわけ

char *strcat (const char *src); 

を実行して結果を返しますこれらの関数への呼び出しをネストしています(これは危険です)が、なぜ結果変数を返す必要があるのか​​分かりません。

私はプログラミングのものをいくつか見直していて、どれくらい忘れているのか信じられません!

答えて

5

使いやすさのために、これらの関数をより大きな式で使用したり、ネストすることができます。

のような何か:

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

または

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

これらの用途は、避けるべきであることが可能言うまでもないです。

0

場合によっては、NULLの戻り値をチェックすることによって、関数が成功したかどうかを示すこともできます。しかし、必ずしも理想的な方法ではありませ

関連する問題