C语言判断文件是否存在
用函数access,头文件是io.h,原型:
int access(const char *filename, int amode);
amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。
这个函数还可以检查其它文件属性:
06 检查读写权限
04 检查读权限
02 检查写权限
01 检查执行权限
00 检查文件的存在性
而这个就算这个文件没有读权限,也可以判断这个文件存在于否
存在返回0,不存在返回-1
#include
int main()
{
if(access("file",0)
printf("'file' is not exist!\n");
return 0;
}
後記:
access()比fopen()判斷檔案是否存在來的快很多,舉例來說:
FILE *fptr;
fptr=fopen("data.wav","r");
if( fptr ){
// if file exist...
}
會先做檔案開啟並且設定為寫入狀態,但是這樣就造成一個問題,如果檔案並不存在,系統會將fptr變數指向NULL。
而這個動作會導致程式(在研究裡是使用DLL裡的Function)在判斷的時候,因為存取到NULL,也就是記憶體之外,進而產生Error。
而將程式修改為access()判斷程式是否存在,就不會造成記憶體存為NULL,並且加快程式判斷。
if( access( "data.wav", 0 ) == 0 ) {
// if file exist...
}
有時間要研究一下,這個access是怎麼做檔案存在的判斷。
- Jul 29 Wed 2009 15:50
C 語言判斷文件是否存在 : access() function
close
全站熱搜
留言列表