获取文件信息
本帖最后由 Cool_Breeze 于 2020-3-30 21:24 编辑#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
int main(int argc,char **argv)
{
static char path;
char *pat_h=path;
register int i=0,j=0,k=0;
char **pf=argv;
while (*(*pf+j))
{
if (*(*pf+j) == '\\') i++;
j++;
}
pf=argv;
for (j=0;k<i;j++,pat_h++)
{
if (*(*pf+j) == '\\')
{
k++;
*pat_h='\\';
pat_h++;
}
*pat_h = *(*pf+j);
}
pat_h=path;
strcat(pat_h,"*.c");
printf("%s\n",path);
intptr_t handle;
struct _finddata_t fileinfo;
time_t t__a;
struct tm* time__a;
handle = _findfirst(pat_h,&fileinfo);
if (handle == -1) exit(EXIT_FAILURE);
do
{
t__a=fileinfo.time_access;
time__a=localtime(&t__a);
printf("%s 文件大小:%0.2lf kb 创建日期:%d/%d/%d %d:%d:%d\n",fileinfo.name,(float)fileinfo.size/1024,\
time__a->tm_year+1900,time__a->tm_mon+1,time__a->tm_mday,time__a->tm_hour,time__a->tm_min,time__a->tm_sec);
t__a=fileinfo.time_write;
time__a=localtime(&t__a);
printf("%s 文件大小:%0.2lf kb 修改日期:%d/%d/%d %d:%d:%d\n",fileinfo.name,(float)fileinfo.size/1024,\
time__a->tm_year+1900,time__a->tm_mon+1,time__a->tm_mday,time__a->tm_hour,time__a->tm_min,time__a->tm_sec);
t__a=fileinfo.time_create;
time__a=localtime(&t__a);
printf("%s 文件大小:%0.2lf kb 访问日期:%d/%d/%d %d:%d:%d\n",fileinfo.name,(float)fileinfo.size/1024,\
time__a->tm_year+1900,time__a->tm_mon+1,time__a->tm_mday,time__a->tm_hour,time__a->tm_min,time__a->tm_sec);
}while (!_findnext(handle,&fileinfo));
_findclose(handle);
return 0;
}
D:\\GIN\\c\\test\\*.c
cvs.c 文件大小:8.73 kb 创建日期:2020/2/29 13:11:54
cvs.c 文件大小:8.73 kb 修改日期:2020/3/19 18:39:53
cvs.c 文件大小:8.73 kb 访问日期:2020/2/29 13:11:54
mem.c 文件大小:2.43 kb 创建日期:2020/2/27 8:18:22
mem.c 文件大小:2.43 kb 修改日期:2020/3/18 14:10:36
mem.c 文件大小:2.43 kb 访问日期:2020/2/27 8:18:22
test.c 文件大小:2.96 kb 创建日期:2020/2/27 11:16:29
test.c 文件大小:2.96 kb 修改日期:2020/3/27 21:3:32
test.c 文件大小:2.96 kb 访问日期:2020/2/27 11:16:29
test1.c 文件大小:0.66 kb 创建日期:2020/3/16 11:32:52
test1.c 文件大小:0.66 kb 修改日期:2020/3/29 21:33:23
test1.c 文件大小:0.66 kb 访问日期:2020/2/29 13:11:54
test2.c 文件大小:1.62 kb 创建日期:2020/3/29 16:36:45
test2.c 文件大小:1.62 kb 修改日期:2020/3/30 21:15:55
test2.c 文件大小:1.62 kb 访问日期:2020/3/29 16:36:45
二分法.c 文件大小:0.82 kb 创建日期:2020/3/6 11:33:6
二分法.c 文件大小:0.82 kb 修改日期:2020/3/6 11:33:6
二分法.c 文件大小:0.82 kb 访问日期:2020/3/6 11:33:6
--------------------------------
Process exited after 0.01365 seconds with return value 0
请按任意键继续. . .
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <malloc.h>
#include <float.h>
#include <errno.h>
typedef unsigned long long intll;
FILE* fileptr(char* file, char* mode);
void scantext(FILE* fp, intll* inu, intll* isize);
void getname(FILE* fp, char* name, intll si);
void getdata(FILE* fp, double* max, double* min, double* avg, double* sum, double* count, intll ns, intll nl, char* max_n, char* min_n);
#define Lines 1024
static char temp;
static char const delim[]=",";
int main(void)
{
//FILE* fpi=fileptr("TWII.csv","rb");
FILE* fpi=fileptr("tes.csv","rb");
FILE* fpo=fileptr("result.csv","wb");
static intll inu,isize;
scantext(fpi,&inu,&isize);
char* iname=(char*)calloc(inu,sizeof(char)*isize);
char* max_n=(char*)calloc(inu,sizeof(char)*isize);
char* min_n=(char*)calloc(inu,sizeof(char)*isize);
getname(fpi, iname, isize);
double* max=(double*)calloc(inu,sizeof(double));
double* min=(double*)calloc(inu,sizeof(double));
double* avg=(double*)calloc(inu,sizeof(double));
double* sum=(double*)calloc(inu,sizeof(double));
double* count=(double*)calloc(inu,sizeof(double));
register intll i=0;
for (i=0;i<inu;i++) *(min+i)=DBL_MAX, *(max+i)=LDBL_MIN;
getdata(fpi, max, min, avg, sum, count, isize, inu, max_n, min_n);
fprintf(fpo,"Item,Count,Max,Max_Date,Min,Min_Date,Sum,Avg\r\n");
for (i=0;i<inu-1;i++) fprintf(fpo,"%s,%.0lf,%.6lf,%s,%.6lf,%s,%.6lf,%.6lf\r\n",\
iname+(i+1)*isize,*(count+i),*(max+i),max_n+i*isize,*(min+i),min_n+i*isize,*(sum+i),*(avg+i));
free(iname);
free(max);
free(min);
free(avg);
free(sum);
free(count);
free(max_n);
free(min_n);
fclose(fpi);
fclose(fpo);
return 0;
}
FILE* fileptr(char* file, char* mode)
{
FILE* fp = fopen(file,mode);
if (fp == NULL)
{
printf("open file fail!:%s",strerror(errno));
exit(EXIT_FAILURE);
}
return fp;
}
void scantext(FILE* fp, intll* inu, intll* isize)
{
//读取两行取最大值
rewind(fp);
fgets(temp,Lines,fp);
register intll i=0;
char *p;
p=strtok(temp,delim);
while(p != NULL)
{
i++;
*isize=strlen(p) > *isize ? strlen(p)+1 : *isize;
p=strtok(NULL,delim);
}
fgets(temp,Lines,fp);
p=strtok(temp,delim);
while(p != NULL)
{
*isize=strlen(p) > *isize ? strlen(p)+1 : *isize;
p=strtok(NULL,delim);
}
*inu=i;
}
void getname(FILE* fp, char* name, intll si)
{
rewind(fp);
fgets(temp,Lines,fp);
char* p=strtok(temp,delim);
register intll i=0,l;
while (p != NULL)
{
strcpy(name+i*si,p);
p=strtok(NULL,delim);
i++;
}
//去掉最后一列换行符;
i--;
l=strlen(name+i*si);
while (l--)
if (*(name+i*si+l) == 0xA || *(name+i*si+l) == 0xD)
*(name+i*si+l) = '\0';
else break;
}
void getdata(FILE* fp, double* max, double* min, double* avg, double* sum, double* count, intll ns, intll nl, char* max_n, char* min_n)
{
rewind(fp);
fgets(temp,Lines,fp);
register double t=0;
register intll i=0;
register intll cou=0;
char *p=NULL;
char *pb=NULL;
while (fgets(temp,Lines,fp))
{
cou++;
i=0;
p=pb=strtok(temp,delim);
do
{
p=strtok(NULL,delim);
if (p == NULL) break;
t=atof(p);
if (t > *(max+i))
{
*(max+i) = t;
memmove(max_n+i*ns,pb,strlen(pb));
*(max_n+i*ns+strlen(pb))='\0';
}
if (t < *(min+i))
{
*(min+i) = t;
memmove(min_n+i*ns,pb,strlen(pb));
*(min_n+i*ns+strlen(pb))='\0';
}
*(sum+i)+=t;
i++;
}while (1);
}
register intll j;
for (j=0; j<nl-1; j++)
{
if (j < i) *(avg+j)=*(sum+j)/cou,*(count+j)=cou;
else *(avg+j)=*(sum+j)/(cou-1),*(count+j)=cou-1;
}
}
页:
[1]