1 回答

TA貢獻1848條經(jīng)驗 獲得超2個贊
fopen("/img/logo.png","x");
在任何情況下它都不會創(chuàng)建 img 目錄。如果目錄不存在,那么它總是會拋出這個警告。
警告:fopen(/img/logo.png):無法打開流:沒有那個文件或目錄
fopen("logo.png","x");
如果 logo.png 尚不存在,那么它將在沒有任何警告的情況下創(chuàng)建它。如果 logo.png 已經(jīng)存在,那么它總是會拋出這個警告。
警告:fopen(logo.png):無法打開流:沒有這樣的文件或目錄
fopen("","x") 相當于為底層 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標志?,F(xiàn)在讓我來幫助您了解為什么會發(fā)生這種情況。
在 POSIX 中,如果文件不存在,則 O_CREAT 標志會導致創(chuàng)建文件。如果包含 O_CREAT 標志,則還必須將第三個參數(shù)傳遞給 open 以指定權限。如果您想避免覆蓋現(xiàn)有文件,請使用組合 O_CREAT | O_EXCL。如果文件已存在,則此組合將返回錯誤。
使用 POSIX 的 C 程序
#include <fcntl.h>
#include <sys/stat.h>
int open(const char *path, int oflag, ...);
結(jié)論:因此,只有當我們想避免覆蓋現(xiàn)有文件時,我們才會使用“x”模式。
- 1 回答
- 0 關注
- 368 瀏覽
添加回答
舉報