C语言获取文件大小和生成空洞文件

2021-12-24  本文已影响0人  itfitness

获取文件大小

1.通过fgetc函数
#include<stdio.h>
#include<stdlib.h>

int main(){
    FILE * fp = fopen("text","r");
    int ch;
    int size = 0;
    while ((ch = fgetc(fp)) != EOF)
    {
        size++;
    }
    printf("文件大小:%d\n",size);
    return 0;
}
2.通过fseek与ftell函数
#include<stdio.h>
#include<stdlib.h>

int main(){
    FILE * fp = fopen("text","r");
    fseek(fp,0,SEEK_END);
    int size = ftell(fp);
    printf("文件大小:%d\n",size);
    return 0;
}
3.通过stat函数
#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
    FILE * fp = fopen("text","r");
    int fd = open("text",O_RDONLY);
    struct stat file_properties;
    fstat(fd,&file_properties);
    off_t size = file_properties.st_size;
    printf("文件大小:%ld\n",size);
    return 0;
}

以上几个方法执行的效果都如下:



读取的text文件如下:

sadasda
asdasdasd
asdafdgdfsdf
dfsdfadsfas

生成空洞文件

空洞文件即是里面内容都是空字符的文件,主要用来占位置,实现如下:

#include<stdio.h>
#include<stdlib.h>

int main(){

    FILE * fp = fopen("test","w+");
    //将文件位置往后移1023个字节
    fseek(fp,1023L,SEEK_SET);
    //往末尾写一个空字符这样就是1024个字节了,要不生成的文件就是空了
    fwrite("",1,1,fp);
    fclose(fp);
    return 0;
}

生成的文件如下:



用vim打开是这样的


上一篇下一篇

猜你喜欢

热点阅读