㈠ linux c 的 open(文件路徑,O_WRONLY | O_CREAT) 裡面的與運算為什麼可以實現打不開就創建
這個是位或,不是與。位或、位與是這樣計算的。
如:二進制的 010 | 001 結果是 011,而 010 & 001 結果就是0了。
O_WRONLY 和 O_CREAT 的關系就相當於上面的 010 和 001。他們位或的值不是0,位與的值就是0了。0表示什麼都不做。用了位或後,就在一個整型的值上設置了不同的標志位,open函數會檢測對應的標志位,如果該標志位設置為1了,就執行對應的操作。
O_CREAT的意思就是創建的意思,在這里就是將 創建文件 的標志位設置為1,這樣open函數無法寫這個文件的時候就會創建他。
㈡ 我在linux下面用fopen函數創建文件,發現文件名長度不能超過8個字元,多餘會被截除,請問是為什麼
你ls -all看下全部的文件擴展名
其實在操作系統層根本就不管你是文本文件還是二進制文件的。所以這個文件擴展名加不加無所謂。文件後綴名一般是為了關聯打開程序用的。在linux如果是terminal模式的話基本上沒什麼用
㈢ cannot create file是什麼意思
該英文的釋義是:不能夠創建文件。但是不能夠創建文件的原因有很多。例如:你使用 C 語言編寫程序,程序中需要創建一個文件(fopen("my_filename", "w" ;),但是假設你是在UNIX/Linux 系統下面,你目前的狀態是普通用戶,不是在你自己的子目錄下面,而是進入了系統目錄,例如:/usr/bin、/usr/sbin、/,等等,你在這些目錄下面創建文件,那麼肯定是無法創建文件的;其他的原因還有可能是:由於系統緩沖區溢出造成無法創建文件,都是有可能的。
㈣ linux fopen返回NULL,errno為0,用perror輸出的是Success,求解釋。
你直接1:touch /home/1 創建一個文件;
2:vi 1;
3.輸入幾個字母abcde
4:wq//保存
fp = fopen( /home/1, "r");
if(fp==NULL) //如果失敗了
{
printf("錯誤!");
exit(1); //中止程序
}
看看打開能行么,可能是宏定義的問題。
errno 記錄系統的最後一次錯誤代碼。代碼是一個int型的值,在errno.h中定義的,你看到不一定是fopen失敗記錄的值。
手工,望採納!
㈤ linux fopen函數 打開文件總是失敗
是這樣的再輸入文件路徑的時候要注意:
你的方向錯了應該是"\"這樣的反斜杠而且要輸入兩個反斜杠
因為字元串中的1個反斜杠的意思就是說他是個轉意字元只有\\的時候才會顯示出來1個字元向你的那個路徑就應該寫成fp=fopen("\\mnt\\yaffs\\red.txt")
有興趣共同探討C就給我留言啊
㈥ linux中,使用fopen函數打開文件失敗
你可以看下,在來另一個目錄的文件你源是否有訪問許可權,同一個目錄下一般來說,你把他復制過來,這個文件的擁有者(owner)就是你了,你是肯定可以訪問的。每個程序都有一個當前目錄的環境變數,你在shell中執行程序時,shell程序就是你執行的程序的父進程,你的程序從shell程序中繼承了當前目錄,所以你只給定文件名時,當然打開的就是當前目錄下的文件了