你貼的這個函數(shù)PathFileExists并不是C語言提供的庫函數(shù),而是windows系統(tǒng)提供的系統(tǒng)調(diào)用,如果你是初學(xué)者,盡量用C語言提供的庫函數(shù)來實現(xiàn)功能,你可以這樣:
創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進行網(wǎng)站設(shè)計及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè), 我們的網(wǎng)頁設(shè)計師為您提供的解決方案。
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ù)追問啊
feof是一個c語言函數(shù),既可用以判斷二進制文件又可用以判斷文本文件。feof(fp)有兩個返回值:如果遇到文件結(jié)束,函數(shù)feof(fp)的值為1,否則為0。
EOF是文件結(jié)束標(biāo)志的文件。在文本文件中,數(shù)據(jù)是以字符的ASCⅡ代碼值的形式存放,ASCⅡ代碼的范圍是0到255,不可能出現(xiàn)-1,因此可以用EOF作為文件結(jié)束標(biāo)志。
當(dāng)把數(shù)據(jù)以二進制形式存放到文件中時,就會有-1值的出現(xiàn),因此不能采用EOF作為二進制文件的結(jié)束標(biāo)志。為解決這一個問題,ASCI C提供一個feof函數(shù),用來判斷文件是否結(jié)束。
擴展資料:
feof的正確寫法:
在VC里,只有當(dāng)文件位置指針(fp-_ptr)到了文件末尾,然后再發(fā)生讀/寫操作時,標(biāo)志位(fp-_flag)才會被置為含有_IOEOF。然后再調(diào)用feof(),才會得到文件結(jié)束的信息。
因此,如果運行如下程序:
char c;
while(!feof(fp))
{
c = fgetc(fp);
printf("%X/n", c);
}
會發(fā)現(xiàn)多輸出了一個FF,原因就是在讀完最后一個字符后,fp-flag仍然沒有被置為_IOEOF,因而feof()仍然沒有探測到文件結(jié)尾。直到再次調(diào)用fgetc()執(zhí)行讀操作,feof()才能探測到文件結(jié)尾。這樣就多輸出了一個-1(即FF)。
正確的寫法應(yīng)該是:
char c;
c = fgetc(fp);
while(!feof(fp))
{
printf("%X/n", c);?
c = fgetc(fp);
}
參考資料來源:百度百科-feof
feof(文件流指針) ,不到結(jié)尾返回0,否則返回1 就一個判斷狀態(tài)的函數(shù) FILE *fp=fopen。。。。 打開成功才能調(diào)用該函數(shù) 這個狀態(tài)檢測是當(dāng)文件讀取函數(shù)發(fā)生讀失敗才會出現(xiàn)
排版後如下: int access(const char* szPathName){ #ifdef _WIN32 if ( _access(szPathName, 0) != 0 ) return -1; #else if ( access(szPathName, F_OK) != 0 ) return -1; #endif return 0; } 這是用到 preprocessor. 用在跨平臺(platform)的各種編譯器. 各平臺的 .h 會不同. 在微軟的平臺會定義 _WIN32 這個符號. 所以這段話就成為 int access(const char* szPathName){ if ( _access(szPathName, 0) != 0 ) return -1; return 0; } 在其它平臺不會定義 _WIN32 這個符號. 所以這段話就成為 int access(const char* szPathName){ if ( access(szPathName, F_OK) != 0 ) return -1; return 0; }
分享文章:c語言判斷文件狀態(tài)的函數(shù) 判斷文件是否存在的函數(shù)
網(wǎng)頁鏈接:http://jinyejixie.com/article2/dochhoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、用戶體驗、定制開發(fā)、網(wǎng)站設(shè)計、網(wǎng)站策劃、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)