2

現在のディレクトリを読み取る場合、関数 getcwd の 2 番目のパラメーターには何を入力すればよいですか?

4

2 に答える 2

4

埋めたいバッファのサイズ:

char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);

これを正しく設定しない (またはスポットENAMETOOLONG/を設定しないERANGE) と、バッファ オーバーフローの問題が発生する可能性があります。

警告:すべてのプラットフォームが PATH_MAX を提供しているわけではありません。それがあなたのプラットフォームにあると確信できるなら、それは非常に便利です。

realpath(), (POSIX.1-2008) を使用することもできmalloc()ます。これにより、これをよりクリーンに行うことができます。

char *result = realpath(".", NULL);
// do stuff with result
free(result);
于 2011-02-14T12:26:28.793 に答える
2

オーバーフローが発生しないように、最初のパラメーターで指定するバッファーの長さ。

于 2011-02-14T12:26:13.107 に答える