3

への呼び出しからファイル名 (およびパス) を取得することは可能mkstemp()ですか? 「はい」の場合、どのように?

4

2 に答える 2

8

mkstempマニュアルページから:

テンプレートの最後の 6 文字は「XXXXXX」である必要があり、これらはファイル名を一意にする文字列に置き換えられます。テンプレートは変更されるため、文字列定数ではなく、文字配列として宣言する必要があります。

したがって、配列を宣言して関数に渡すと、配列が変更され、配列にファイル名が含まれます。

于 2015-09-08T17:02:19.970 に答える
3

入力文字列はファイル名に変更されます。したがって、文字列リテラルにすることはできません。

POSIX は次のように述べていmkstemp()ます。

#include <stdlib.h>

int mkstemp(char *template);

このmkstemp()関数は、 が指す文字列の内容をtemplate一意のパス名に置き換え、読み書き用に開いているファイルのファイル記述子を返します。… の文字列はtemplate、6 つの末尾に 'X' が付いたパス名のように見える必要があります。mkstemp()各 'X' を移植可能なファイル名文字セットの文字に置き換えます。…</p>

同じページにはmkdtemp()、一時ディレクトリの作成に使用できるものも記載されています。

于 2015-09-08T17:01:45.383 に答える