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打开是这样的