c语言 测试文件存在,c语言 file如何判断文件是否存在

c语言中如何判断文件是否存在

一般情况下,我们可以使用函数stat(), access() 和fopen()来检验文件是否存在,但是由于文件权限的问题,有时可能不像结果所言,可能不是因为文件不存在,而是没有打开的权限。

函数fopen

通常情况下使用fopen主要用于读写文件,而我们就可以在这个上面做文章,通过以只读r的模式打开,如果失败,就是文件不存在咯。

1

2

3

4

5

6

7

8

9

10

11FILE *fp;

fp=fopen(“file.txt” , “r”);

if ( fp == NULL )

printf(“file not exist!”);

else

fcolse(fp);

也可以写个子函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14//存在返回0,不存在返回1

int file_exist(FILE *fo)

{

if(fopen(fp)==NULL)

return 1;

else

return 0;

}

函数access

设计的子函数为:

1

2

3

4int file_exists(char *filename)

{

return (access(filename, 0) == 0);

}

access(filename, 0)0 表示判断文件是否存在

finename 文件名称 ,mode 模式,共5种模式:

0-检查文件是否存在

1-检查文件是否可运行

2-检查文件是否可写访问

4-检查文件是否可读访问

6-检查文件是否可读/写访问

注意,有的不适用数字表示,比如文件是否存在使用模式F_OK,类似的R_OK、W_OK和X_OK分别表示读写和可执行模式。

函数stat

stat函数可以获取文件的属性:

·表头文件: #include

·函数定义: int stat(const char *file_name, struct stat *buf);

·函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中

·返回值: 执行成功则返回0,失败返回-1,错误代码存于errno(需要include )

因此如果文件存在,该函数将返回0,否则返回1。利用stat()函数来判断文件是否存在的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15int cfileexists(const char* filename){

struct stat buffer;

int exist = stat(filename,&buffer);

if(exist == 0)

return 1;

else // -1

return 0;

}

函数lstat

与stat函数比较类似,除了在符号链接的时候有点小差别。

函数open

对比与fopen,我们也可以使用open来判断文件的存在与否。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值