用C語言可以實現新建檔案,這裡要用到一個fopen函式,它是一個非常強大的函式,可以以各種方式建立、讀取檔案,具體語法如下:
檔案指標名=fopen(檔名,使用檔案方式);
“檔案指標名”必須是被說明為File型別的指標變數;
“檔名”是被開啟檔案的檔名,也包括路徑;
“使用檔案方式”是指檔案的型別和操作方式(新建,或寫入內容);
“檔名”是字串常量或者字元陣列。
檔案使用方式由r、w、a、b、、+等6個字元拼成,其各字元的含義是:
r(read)讀;
w(write)寫;
a(append)新增;
b(binary)二進位制檔案;
t(text)文字檔案,可省略;
+ 讀和寫
凡用 r 開啟一個檔案時,該檔案必須已經存在,且只能從該檔案讀出;
凡用 w 開啟一個檔案時,只能向該檔案中寫入。若指定的檔案不存在,則以指定的檔名新建該檔案,若要開啟的檔案已經存在裡面也有內容時,就刪除該檔案,重建一個新檔案。
若要向一個已經存在的檔案中新增新內容,則只能用 a 方式開啟該檔案,且該檔案一定要存在,否則會出錯;
在開啟一個檔案時,如果出錯,fopen函式將返回空值NULL,在程式中可以用此資訊來判別檔案開啟工作是否已經完成,並作出相應的處理。例:
if((fp=fopen("c:\\xiangxiao0831","rb"))=NULL);
{
printf("在開啟 c:\\xiangxiao0831時出錯了!");
getchar();
exit(1);
意思是:在開啟c:\\xiangxiao0831這個檔案時出錯了,但是這裡可以報錯,即在螢幕上顯示 ”在開啟c:\\xiangxiao0831時出錯了!“,然後該程式等待指令,當輸入任意字元後再繼續執行(執行退出指令)。
這裡出現了一個前面不曾見到的檔案用法”rb”,實際上是r、w、a、b等字元組合表示的檔案用法,還有如下組合方式:
rb 開啟一個用於讀取的二進位制檔案;
wb 建立一個用於寫入的二進位制檔案;
r+ 開啟一個可讀可寫的文字檔案;
w+ 新建一個可讀可寫的文字檔案;
#include<stdio.h>
main()
{
char a="我的第一篇部落格";
File*file;
file=fopen(“f:\\資料/電腦/xiangxiao0831”,“r+”);
if(file==NULL)
printf("檔案不存在!");
else
file=fopen("f:\\資料/電腦/xiangxiao0831"."w+");
fprintf(file,"a=c%",a);
fclose(file);
}
C語言判斷資料夾或者檔案是否存在的方法
方法一:access函式判斷資料夾或者檔案是否存在
函式原型: int access(const char *filename, int mode);
所屬標頭檔案:io.h
filename:可以填寫資料夾路徑或者檔案路徑
mode:0 (F_OK) 只判斷是否存在
2 (R_OK) 判斷寫入許可權
4 (W_OK) 判斷讀取許可權
6 (X_OK) 判斷執行許可權
用於判斷資料夾是否存在的時候,mode取0,判斷檔案是否存在的時候,mode可以取0、2、4、6。 若存在或者具有許可權,返回值為0;不存在或者無許可權,返回值為-1。
錯誤程式碼
EACCESS 引數pathname 所指定的檔案不符合所要求測試的許可權。
EROFS 欲測試寫入許可權的檔案存在於只讀檔案系統內。
EFAULT 引數pathname指標超出可存取記憶體空間。
EINVAL 引數mode 不正確。
ENAMETOOLONG 引數pathname太長。
ENOTDIR 引數pathname為一目錄。
ENOMEM 核心記憶體不足
ELOOP 引數pathname有過多符號連線問題。
EIO I/O 存取錯誤。
特別提醒:使用access()作使用者認證方面的判斷要特別小心,例如在access()後再做open()的空檔案可能會造成系統安全上的問題。
例項:
#include <stdio.h>
#include <io.h>
int main(void)
{
if ( !access("C://windows",0) )
puts("C://windows EXISITS!");
else
puts("C://windows DOESN'T EXISIT!");
return 0;
}
方法二:fopen函式判斷檔案是否存在
函式原型:FILE *fopen (char *filename, char *type);
filename:檔案路徑
type:開啟檔案的方式(有r、w、r+、w+、a、rb、wb等等)
用於判斷檔案是否存在可以使用 r 或者 rb ,因為使用 其它方式的話,可能會自動建立檔案。 返回值為NULL(打不開)和正數(能開啟)。
特別提醒:用這種方法做出的判斷是不完全正確的,因為有的檔案存在,但是可能不可讀。
refs:
https://www.cnblogs.com/xiangxiao/articles/4507181.html
https://www.runoob.com/cprogramming/c-preprocessors.html