c语言如何读取文件的属性(判断其是否含子目录)

c语言如何读取文件的属性(判断其是否含子目录),第1张

#include "stdafx.h"

#include <stdio.h>

#include <io.h>

int main(int argc, char* argv[])

{

struct _finddata_t fd

int hFile = _findfirst( "D:\\temp\\*.*", &fd )

if (-1 != hFile)

{

int done = 0

while(0 == done)

{

if (_A_SUBDIR &fd.attrib)

printf ("子目录:")

printf("%s\n", fd.name)

done = _findnext( hFile, &fd )

}

_findclose( hFile )

}

return 0

}

已修改答复,请试验~~

如果实在linux下,你可以用stat()函数查看,Windows下我不知道函数,通常我是在linux下做的。。

不过在Windows下,你可以使用

需要包含

#include

system("attrib"

+

szFileName)

看看,szFileName是你的文件名,写入

双引号

内~

比如文件叫a.c

你就

system("attrib

a.c")

即可~

C语言中获取文件大小方式有很多,在不使用任何系统命令,仅使用C自身库函数情况下,常用方式有两种:

一、获取文件系统属性,读取文件大小。

在C语言库函数中有stat函数,可以获取文件的基本信息,其中就有文件大小。

#include <sys/stat.h>//包含头文件。

int file_size(char* filename)//获取文件名为filename的文件大小。

{

    struct stat statbuf

    int ret

    ret = stat(filename,&statbuf)//调用stat函数

    if(ret != 0) return -1//获取失败。

    return statbuf.st_size//返回文件大小。

}

二、通过C语言文件 *** 作,获取文件大小。

以fopen打开的文件,通过fseek可以定位到文件尾,这时使用ftell函数,返回的文件指针偏移值,就是文件的实际大小。

代码如下:

#include <stdio.h>//包含头文件。

int file_size(char* filename)//获取文件名为filename的文件大小。

{

    FILE *fp = fopen(filename, "rb")//打开文件。

    int size

    if(fp == NULL) // 打开文件失败

        return -1

    fseek(fp, 0, SEEK_END)//定位文件指针到文件尾。

    size=ftell(fp)//获取文件指针偏移量,即文件大小。

    fclose(fp)//关闭文件。

    return size

}

三、注意事项:

第一种方式为直接读取文件信息,无需打开文件,所以更高效。

四、测试代码:

以上接口函数,均可以用如下主函数测试:

#include <stdio.h>

int main()

{

    char s[100]

    int size

    scanf("%s",s)//输入文件名

    size = file_size(s)//获取文件大小。

    if(size == -1) printf("无法获取文件大小,可能文件并不存在或不可读\n")

    else printf("文件大小为%d\n", size)

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12056762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存