C语言程序的特殊操作——文件大小计算与运行时间记录

计算文件的大小

在I/O函数中有函数fseek()ftell() ,功能:

  • fseek(FILE *fp,long offset,intbase):重定位流上的文件指针,即将fp指向的文件的位置指针移向以base为基准,以offset为偏移量的位置
  • ftell(FILE *fp):返回当前文件指针的位置。这个位置是指当前文件指针相对于开头的位移量

因此可以先通过函数dseek()将文件的指针定位到文件的最后SEEK_END,然后通过函数ftell()返回当前文件指针相对于文件开头的位移量。即文件的长度。
实例源码: 打开同一目录下的test.txt文档并计算文档的大小

#include "stdio.h"
int main(){
    FILE *myf;
    long f;
    myf=fopen("test.txt","r");
    fseek(myf,0,SEEK_END);
    f=ftell(myf);
    fclose(myf);
    printf("The length of the file is %d bytes\n",f);
    return 0;
}

运行结果:
在这里插入图片描述

记录程序的运行时间

用于分析代码或算法的性能,查找系统瓶颈等时候用于统计一段代码或一个模块的执行时间。需要使用到< time.h >库文件里的clock_t类型和clock()函数:

  • clock_t类型:是< time.h >库文件中定义的表示时间值的算数类型。,可用于记录存储一个系统时间值。
  • clock()函数返回从程序开始到调用clock()函数所花费的处理器时间。返回类型是clock_t类型
#include <time.h> 
#include <stdio.h> 

int main(){ 
   clock_t start, end;
   start = clock();    //记录开始时间
   printf("start:%f\n",(float)start);
   sleep(1);   //间隔1秒
   end = clock();    //记录结束时间
   printf("end:%f\n",(float)end);
   printf("The time was: %f\n", (float)((end - start) / CLK_TCK )); 
   printf("CPU 占用的总时间:%f\n", (double)(end - start) / CLOCKS_PER_SEC );
   return 0; 
}

运行结果:
在这里插入图片描述
输出处除以CLK_TCK是将该时间转换为以秒为单位;除以 CLOCKS_PER_SEC是为了获取 CPU 所使用的秒数(在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,该函数大约每 72 分钟会返回相同的值)。
输出处强制类型转化,为确保精度,使用float或double类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值