日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
c語(yǔ)言文件存在函數(shù) c語(yǔ)言保存文件函數(shù)

C語(yǔ)言判斷指定文件是否存在

頭文件:io.h

目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、下花園網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

功 能: 確定文件或文件夾的訪問(wèn)權(quán)限。即,檢查某個(gè)文件的存取方式,比如說(shuō)是只讀方式、只寫(xiě)方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。

用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );

參數(shù)說(shuō)明:

filenpath

文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名

備注:當(dāng)該參數(shù)為文件的時(shí)候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時(shí)候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫(xiě)權(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 只判斷是否有寫(xiě)權(quán)限

04 只判斷是否有讀權(quán)限

06 判斷是否有讀并且有寫(xiě)權(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

功 能: 確定文件或文件夾的訪問(wèn)權(quán)限。即,檢查某個(gè)文件的存取方式,比如說(shuō)是只讀方式、只寫(xiě)方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。

用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );

參數(shù)說(shuō)明:

filenpath

文件或文件夾的路徑,當(dāng)前目錄直接使用文件或文件夾名

備注:當(dāng)該參數(shù)為文件的時(shí)候,access函數(shù)能使用mode參數(shù)所有的值,當(dāng)該參數(shù)為文件夾的時(shí)候,access函數(shù)值能判斷文件夾是否存在。在WIN NT 中,所有的文件夾都有讀和寫(xiě)權(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 只判斷是否有寫(xiě)權(quán)限

04 只判斷是否有讀權(quán)限

06 判斷是否有讀并且有寫(xiě)權(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);

}

C語(yǔ)言文件函數(shù)

//要另外說(shuō)下如fprintf(stderr, "Can't open %s\n", file_app);這是向文件或者系統(tǒng)設(shè)備輸出的函數(shù);但他的文件指針為stderr;這是c中的標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備指針,系統(tǒng)自動(dòng)分配為顯示器故相當(dāng)于printf("Can't open %s\n", file_app);

#include stdio.h

#include stdlib.h

#include string.h

#define BUFSIZE 1024

#define SLEN 81

void append(FILE *source, FILE *dest);

int main(void)

{

FILE *fa, *fs; //定義2個(gè)文件類型指針

int files = 0; // 追加文件個(gè)數(shù)

char file_app[SLEN];

char file_src[SLEN]; // 2個(gè)字符串用來(lái)儲(chǔ)存文件名;

puts("Enter name of destination file:");//輸出Enter name of destination file:

gets(file_app);//輸入要追加的文件名

if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打開(kāi)文件,如果打開(kāi)失敗退出;

{

fprintf(stderr, "Can't open %s\n", file_app);

exit(2);

}

if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開(kāi)失敗退出

{

fputs("Can't create output buffer\n", stderr);

exit(3);

}

puts("Enter name of first source file (empty line to quit):");//輸出Enter name of first source file (empty line to quit):

while (gets(file_src) file_src[0] != '\0')//輸入源文件如果是空串結(jié)束循環(huán)

{

if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同

fputs("Can't append file to itself\n",stderr);

else if ((fs = fopen(file_src, "r")) == NULL)//如果打開(kāi)源文件失敗

fprintf(stderr, "Can't open %s\n", file_src);

else

{

if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開(kāi)失敗開(kāi)始下次循環(huán)

{

fputs("Can't create input buffer\n",stderr);

continue;

}

append(fs, fa);//函數(shù)

if (ferror(fs) != 0)//檢查文件操作是否有錯(cuò)

fprintf(stderr,"Error in reading file %s.\n",

file_src);

if (ferror(fa) != 0)

fprintf(stderr,"Error in writing file %s.\n",

file_app);

fclose(fs);//關(guān)閉源文件

files++;//追加文件數(shù)+1

printf("File %s appended.\n", file_src);

puts("Next file (empty line to quit):");

}

}

printf("Done. %d files appended.\n", files);

fclose(fa);//關(guān)閉追加文件

return 0;

}

void append(FILE *source, FILE *dest)

{

size_t bytes;

static char temp[BUFSIZE];

while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的內(nèi)容追加到追加文件,塊大小sizeof(char),塊數(shù)為BUFSIZE

fwrite(temp, sizeof (char), bytes, dest);//寫(xiě)文件塊大小sizeof(char),塊數(shù)為BUFSIZE

}

判斷文件是否存在 c語(yǔ)言 函數(shù)

排版後如下: 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. 用在跨平臺(tái)(platform)的各種編譯器. 各平臺(tái)的 .h 會(huì)不同. 在微軟的平臺(tái)會(huì)定義 _WIN32 這個(gè)符號(hào). 所以這段話就成為 int access(const char* szPathName){ if ( _access(szPathName, 0) != 0 ) return -1; return 0; } 在其它平臺(tái)不會(huì)定義 _WIN32 這個(gè)符號(hào). 所以這段話就成為 int access(const char* szPathName){ if ( access(szPathName, F_OK) != 0 ) return -1; return 0; }


網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言文件存在函數(shù) c語(yǔ)言保存文件函數(shù)
鏈接URL:http://www.dlmjj.cn/article/hjpije.html