C语言,如何实现在每条printf之前输出当前时间?

已经使用strftime得到一个存有格式化时间的字符串timestamp(char数组),要求是程序要接收每一条输出信息,并且输出到stderr,同时每行的开头都要有当前... 已经使用strftime得到一个存有格式化时间的字符串timestamp(char 数组),要求是程序要接收每一条输出信息,并且输出到 stderr,同时每行的开头都要有当前时间。

目前我的方法是在每条输出之前更新一下当前时间(currentTime = time(NULL); strftime(......);),然后把所有 printf 改成 fprintf(stderr, "%s ........", timestamp)。(printf 和 fprintf(stderr, ...) 混用,要么 printf 的内容不能输出,要么 fprintf 的内容不能输出。)
还有,我的 printf 语句同时存在于两个c文件中(main 和函数定义),所以这样做很麻烦。

有没有更方便的方法?
展开
 我来答
金色潜鸟
推荐于2016-12-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5490万
展开全部
编一个输出时间的函数,输出时调用一下。例如:

#include<stdio.h>
#include<time.h>
char * t(){
time_t now = time (NULL);
return ctime(&now);
}
main(){
int i,j,k,m;
for (m=0;m<3;m++)
{
for (j=0;j<5000;j++)
for (i=0;i<5000;i++){
k++; k = k % 123;
}
printf("%sk=%d\n", t(), k); // 调用 t() 输出时间。
}
return 0;
}
===========
当然 你也可以编写一个
void t(){
time_t seconds;
struct tm * timeinfo;
seconds = time (NULL);
timeinfo = localtime ( &seconds );
printf("%d-%d-%d: ",timeinfo->tm_hour,timeinfo->tm_min, timeinfo->tm_sec);
}
就打印 时分秒。
调用:
t(); printf("%d\n", k);
追问
输出时间没问题,我的问题是现在已经写好一个程序,会通过计算一组数打印出很多东西。现在要在每一行输出的最前端输出当前时间,而我的 printf 语句并不是都在同一个循环或同一个文件内,这样的话不是要找到每一条 printf 然后在里面加入输出时间的函数,那太麻烦了。而且还要输出到 stderr。
追答
建函数,void t(){}
输出用
fprintf(stderr, "%d-%d-%d: ",timeinfo->tm_hour,timeinfo->tm_min, timeinfo->tm_sec);
就到 stderr.
---------------------------------
用文本编辑的 搜索和替代功能,把 原来的程序里的 "printf(" 替代 成 "t();printf(" 。再大的程序,改起来也不困难啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式