计算文件的大小
在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类型。