其實在ANSI C之前C語言是不需要聲明函數(shù)就能調(diào)用的。在編譯階段,調(diào)用沒有聲明的函數(shù)會把這個問題拖延到念汪鏈接階段,在鏈接階段找不到符號才由鏈接器報錯。那么沒有聲明的情況下怎么知道這個函數(shù)到底是怎樣的原型呢……他們把這叫做autoprototype,根據(jù)調(diào)用時傳入的形參的類型猜測函數(shù)的原型。實際上在ANSI C中你還是不需租鄭要完整的聲明原型,可以在聲明的時候把參數(shù)列表忽略掉,讓編譯器去根據(jù)調(diào)用處猜測函數(shù)的原型。不仔型仔過這樣寫出來之后根據(jù)不同的調(diào)用約定有時候會由于編寫者的錯誤而意外的破壞棧幀。這樣對許多人來說還是留下一個問題:古老的Turbo C并不遵循ANSI C的建議,它怎么需要提前聲明函數(shù)?老實說Turbo C是一個特例。我相信貝爾實驗室那幫發(fā)明了C和UNIX的人都會認(rèn)為Turbo C的這個設(shè)計很無聊,不符合使用的習(xí)慣以及實際的需要。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比海安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式海安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋海安地區(qū)。費(fèi)用合理售后完善,十年實體公司更值得信賴。
頭文件:io.h
功 能: 確定文件或文件夾的訪問權(quán)限。即,檢查某個文件的存取方式,比如說是只讀方式、只寫方式謹(jǐn)悔則等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
參數(shù)說明:
filenpath
文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名
備注:當(dāng)該參數(shù)為文件的時候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫權(quán)限
mode
要判斷的模式
在頭文件unistd.h中的預(yù)定義如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具體含義如下:
00 只判斷是否存在
02 只判斷是否有寫權(quán)限
04 只判斷是否有讀權(quán)限祥棚
06 判斷是否有讀并且有寫權(quán)限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
頭文件:io.h
功 能: 確定前鏈文件或文件夾的訪問權(quán)限。即,檢查某個文件的存取方式,比如說是只讀方式、只寫方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
參數(shù)說明:
filenpath
文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名
備注:當(dāng)該參數(shù)為文件的時候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫權(quán)限
mode
要判斷的模式
在頭文件unistd.h中的預(yù)定義如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具體含義如下:
00 只判斷是否存在
02 只判斷是否有寫權(quán)限
04 只判斷是否有讀權(quán)限
06 判斷是否有讀并且有寫權(quán)限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
你貼的這個函數(shù)PathFileExists并不是C語言提供的庫函數(shù),而是windows系統(tǒng)提供的系統(tǒng)調(diào)用,如果你是初學(xué)者,盡量用C語言提供的庫函數(shù)來實現(xiàn)功能,你可以這樣:
int exist(char *file) //傳入想要判斷的路徑字符串指針
{
FILE *fp;
fp=fopen(file,"r"); //fopen是一個C庫函數(shù),用于打開文件,"r"是只讀模式,在這種模式下,如果文件存在,則能成功以只讀模式打開,fopen返回一個非0的文件描述符,如果文件不存在,則fopen返回NULL(NULL意思是空)。正好可以利用這一點來判斷文絕咐脊件是否存在
if(fp=NULL)
return 0; //不存在返回0
else
{
fclose(fp); //存在的話,要先把之前打開的文件關(guān)掉
return 1; //然后返回1
}
}
這樣,你就可用這里定義的exist函數(shù)判斷簡游文件是否存在了。比如
if(exist("a.txt")==0)printf("不存在!");
else printf("存在!");
如果你真想用PathFileExists這個函數(shù),那么也很簡單,LPCTSTR你可以簡單理解為就相當(dāng)于char*,這是windows封裝并滲的一個數(shù)據(jù)類型。_in是一個修飾符,表示參數(shù)是傳入給PathFileExists用的而不是由PathFileExists傳出來的。這個函數(shù)可以這樣用:
if(PathFileExists("a.txt")==FALSE)printf("不存在!");
else printf("存在!");
用這個函數(shù)時注意加頭文件windows.h
有問題請繼續(xù)追問啊
你說的應(yīng)該是exit()函數(shù)吧,這個函數(shù)的詳細(xì)資料如下:
函數(shù)名: exit()
所在頭文腔瞎鋒件:stdlib.h(如果是”VC6.0“的話頭文件為:windows.h)
功 能: 關(guān)閉所有文件,終止正在執(zhí)行的進(jìn)程。
exit(1)表示異常退出.這個1是返回給操作系統(tǒng)的。
exit(x)(x不為0)都表示異常退出
exit(0)表示正常退出
exit()的參數(shù)會被傳遞給一些操作系統(tǒng),包括UNIX,Linux,和MS DOS,以神游供其他程序使用伍晌。
stdlib.h: void exit(int status);
參 數(shù) : status //程序退出的返回值.