文件操作(stat函数)

stat函数可以获取文件信息

复制代码
/***
stat.c
***/
#include<stdio.h>
#include<string.h>
#include<sys/stat.h>
#include<stdlib.h>

int main()
{
    struct stat st = {0};        //定义一个结构体,名字叫st
    stat("./a.txt",&st);        //调用完stat函数之后,文件的相关信息就保存再st结构中
    char *array = malloc(st.st_size);        //st.st_size 表示文件的大小,在堆中动态分配一块文件大小的内存
    FILE *p = fopen("./a.txt","rb");
    fread(array,sizeof(char),st.st_size,p);        //相当于把整个文件一下子放入内存中
    fclose(p);
    p = fopen("./b.txt","wb");
    fwrite(array,sizeof(char),st.st_size,p);        //将堆中的信息一下写入文件中
    fclose(p);
}
复制代码

可以使用时间相关函数来计算一下程序运行的时间(对于大文件复制有很好的效果)

复制代码
#include<stdio.h>
#include<string.h>
#include<sys/stat.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    clock_t c1 = clock();
    struct stat st = {0};
    stat("./a.txt",&st);
    char *array = malloc(st.st_size);
    FILE *p = fopen("./a.txt","rb");
    fread(array,sizeof(char),st.st_size,p);
    fclose(p);
    p = fopen("./b.txt","wb");
    fwrite(array,sizeof(char),st.st_size,p);
    fclose(p);
    clock_t c2 = clock();
    printf("%u\n",c2-c1);
}
复制代码

 

posted @   王清河  阅读(634)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2018-07-24 1008 数组元素循环右移问题 (20)
2018-07-24 1007. 素数对猜想
2018-07-24 1005. 继续(3n+1)猜想 (25)
2018-07-24 1001. 害死人不偿命的(3n+1)猜想 (15)
2018-07-24 1003 我要通过!(20)(20 分)
2018-07-24 1007 Maximum Subsequence Sum (25)
点击右上角即可分享
微信分享提示