1、打印时间,精确到毫秒
#include <sys/timeb.h>
#include <time.h>
#include <stdio.h>
int main(void)
{
struct timeb tTimeB;
ftime(&tTimeB);//获取当前的秒数和毫秒数
struct tm *tTM = localtime(&tTimeB.time);//将秒数转为时间格式
printf("%04d-%02d-%02d %02d:%02d:%02d.%03d\n", tTM->tm_year + 1900,
tTM->tm_mon + 1, tTM->tm_mday, tTM->tm_hour, tTM->tm_min, tTM->tm_sec,
tTimeB.millitm);
return 0;
}
2、打印时间,精确到秒
#include <stdio.h>
#include <time.h>
#include <utime.h>
int main()
{
//1. 定义时间戳普通变量
time_t t_abc;
//2. 通过time()函数,获取时间戳
time(&t_abc);
//3. 定义日历指针变量
struct tm * tdata;
//4. 通过localtime()函数,将时间戳转换为日历信息
tdata=localtime(&t_abc);
//5. 通过asctime()函数,将日历信息格式日期的形式输出
//Tue Feb 28 15:14:38 2023
puts(asctime(tdata));
//5. 通过ctime()函数,直接将时间戳以格式日期的形式输出
//Tue Feb 28 15:14:38 2023
puts(ctime(&t_abc));
// 按照格式定义,自主选择格式化输出日期
char current_time_str[30];
size_t size = strftime(current_time_str,30,"%Y:%m:%d %H:%M:%S",tdata);
//2023:02:28 15:14:38
printf("%s",current_time_str);
return 0;
}
3、打印某个目录下的文件及文件夹
void fetchdir(char* path,void (*fcn)(char*))
{
char name[256];
struct dirent* stp;
DIR* dp;
// 打开目录
if((dp = opendir(path))== NULL)
{
fprintf(stderr,"fetchdir error%s\n",path);
return;
}
while((stp = readdir(dp)) != NULL)
{
if(strcmp(stp->d_name,".")==0 || strcmp(stp->d_name,"..")==0)
continue;
if(strlen(path)+strlen(stp->d_name)+2>sizeof(name))
{
fprintf(stderr,"fetchdir name %s %s too long\n",path,stp->d_name);
}
else
{
sprintf(name,"%s/%s",path,stp->d_name);
fcn(name);
}
}
closedir(dp);
}
void list_all_files(char *ptr, char *func, int line)
{
struct stat sbuf;
if(lstat(ptr,&sbuf)==-1)
{
fprintf(stderr,"lstat error%s\n",ptr);
}
// 判断是否是文件
if((sbuf.st_mode & S_IFMT) == S_IFDIR)
{
fetchdir(ptr,list_all_files);
}
//printf("%ld %s\n",sbuf.st_size,path); // 不是目录则是普通文件,直接打印文件名
//printf("%s\n",ptr); // 不是目录则是普通文件,直接打印文件名
}