トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
ファイルの名前を生成する。 |
|
ヘッダ |
||
形式 |
char* tmpnam(char* s); |
|
引数 |
s |
生成されたファイルの名前を受け取る配列を指すポインタ。あるいはヌルポインタ。 |
戻り値 |
引数s がヌルポインタでなければ、s を返す。引数s がヌルポインタであれば、関数内で静的記憶域期間を持った配列にファイル名が格納され、これを指すポインタを返す。 いずれの場合も、失敗するとヌルポインタを返す。 |
|
詳細 |
他のファイルと衝突することのない名前を生成する。生成された名前を使って、fopen関数を呼び出すことができる。こうして新規に生成されたファイルは、tmpfile関数のような一時ファイルではなく、自動的に削除されるようなことはない。削除を行うには、remove関数を使う。 この関数は、TMP_MAXマクロで定義された回数分までの呼び出ししか保証されていない。この回数を超えて呼び出すと、一意な名前が生成される保証がなくなる。ただし、TMP_MAX の値以下の回数であっても、生成される名前がすでに既存のファイルで使用されている可能性があり、この場合はその名前を返せない。 |
|
注意 |
引数s をヌルポインタにした場合は、静的記憶域期間を持つ変数にファイル名が格納されて、これを指すポインタが返される。したがって、この関数を再度、引数s をヌルポインタにして呼び出した際、以前の情報は上書きされる可能性がある。 この関数がファイル名が生成してから、実際に fopen関数などの関数がファイルを作成するまでの間に、他のプログラムが同じ名前のファイルを生成する可能性がある。このようなケースは、セキュリティ上、重大な問題になるかもしれない。 また、作成された一時ファイルは、他のプログラムからもアクセスできてしまうことも問題になり得る。実行環境における事情をよく調査すること。安全性を高めた非標準の関数が用意されていることもある。 |
|
使用例 |
実行結果:
実行結果(生成されたファイル):
|
|
関連 |
一時ファイルを作るには tmpfile関数を使う方が良い。ただし、環境ごとに用意されているより安全なバージョンがあるのなら、そちらを使った方が良いかもしれない。 |
|
解説章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
()
の前後の空白の空け方)(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)「NULL」という表記を「ヌルポインタ」に修正。
全体的に文章を見直し修正。
「使用例」を修正。生成されたファイル名の出力と、最後にファイルを削除する処理を追加した。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |