当前位置: 技术问答>linux和unix
unix下系统调用的问题
来源: 互联网 发布时间:2015-01-07
本文导语: 在unix某目录下,有一个文件名为log20021124的文件,数字部分是日期,每天都会变,现在要求在c中实现读取这个文件的操作,请问如何只通过文件名的前半部分“log”每天动态地得到它的全名,以便在程序中访问这个...
在unix某目录下,有一个文件名为log20021124的文件,数字部分是日期,每天都会变,现在要求在c中实现读取这个文件的操作,请问如何只通过文件名的前半部分“log”每天动态地得到它的全名,以便在程序中访问这个文件?请各路高手指教!
|
char filename[1024];
FILE *fp;
struct tm *ltm;
int err;
long t;
time(&t);
ltm=localtime(&t);
sprintf(filename,"../log%4d%2d%2d",
ltm->tm_year+1900,ltm->tm_mon,ltm->tm_mday);
if((fp=fopen(filename,'r'))==NULL){
printf("can't open the file !!");
return 0
}
......
FILE *fp;
struct tm *ltm;
int err;
long t;
time(&t);
ltm=localtime(&t);
sprintf(filename,"../log%4d%2d%2d",
ltm->tm_year+1900,ltm->tm_mon,ltm->tm_mday);
if((fp=fopen(filename,'r'))==NULL){
printf("can't open the file !!");
return 0
}
......
|
#define PREFIX "log"
char addon[9];
char filename[14];
time_t curtime = time(NULL);
strftime(addon, sizeof(addon),"%Y%m%d", localtime(&curtime) );
/* Today's Log* /
sprintf(filename, "%s%s", PREFIX, addon );
/* Yesterday's Log */
sprintf(filename, "%s%d", PREFIX, atoi(addon)-1 );
char addon[9];
char filename[14];
time_t curtime = time(NULL);
strftime(addon, sizeof(addon),"%Y%m%d", localtime(&curtime) );
/* Today's Log* /
sprintf(filename, "%s%s", PREFIX, addon );
/* Yesterday's Log */
sprintf(filename, "%s%d", PREFIX, atoi(addon)-1 );
|
建议调用shell
改变当前时区TZ
用完再改回来
改变当前时区TZ
用完再改回来
|
关于获得前天的日期
long t;
struct tm* ltm;
char *someday;
t=time(NULL);/*或者time(&t),t中保存的是从1970.0.0 0:0至今的秒数*/
t-=2*24*60*60;/*减去两天花去的秒数(即前天到今天的时间)*/
ltm=localtime(t);/*得到的是时间的结构自己找需要的*/
long t;
struct tm* ltm;
char *someday;
t=time(NULL);/*或者time(&t),t中保存的是从1970.0.0 0:0至今的秒数*/
t-=2*24*60*60;/*减去两天花去的秒数(即前天到今天的时间)*/
ltm=localtime(t);/*得到的是时间的结构自己找需要的*/