Solved

Print current date and time in a file

Posted on 2004-04-16
7
677 Views
Last Modified: 2010-04-15
Hi,

My C program printing data in a file. Now, I need to add current date and time in a specific format. How would I do it? Is there any library function for that?

Here is what I print in a file:

fprintf(outfile,"id=1234\n");
fprintf(outfile,"frequnecy=34000\n");
fprintf(outfile,"name=michelle\n");

Now, I need to add current date and time in yymmdd hh:mm format.

forexample:

fprintf(outfile,"namedatetime=michelle date time\n");

So, it should print in a file like this (current date & time)

namedatetime=michelle 040416 10:47

Name (michelle) is constant, so don't need to worry about it. I will put michelle in print statement .

I will be really appreciated if you can help me in this.

Thanks,
John
0
Comment
Question by:John22
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 12

Expert Comment

by:stefan73
ID: 10843016
Hi John22,
Use strftime:

 #include <time.h>

     size_t strftime(const char *s, size_t  maxsize,  const  char
     *format, const struct tm *timeptr);


Cheers,
Stefan
0
 
LVL 12

Expert Comment

by:stefan73
ID: 10843055
Here is an example:

#include <time.h>

time_t now;
char timebuf[256];

now=time(0);
strftime(timebuf,"%y%m%d %H%M",localtime(now));

fprintf(outfile,"namedatetime=michelle %s\n",timebuf);


0
 
LVL 22

Accepted Solution

by:
NovaDenizen earned 100 total points
ID: 10843151
#include <time.h>

....

time_t now_secs;
struct tm now_breakout;
char buf[1024];
time(&now);
now_breakout = *(localtime(&now)); // or use localtime_r
strftime(buf, sizeof(buf), "%g%m%d %H:%M", &now_breakout);
fprintf(outfile, "namedatetime = michelle %s\n", buf);

Check the strftime man page if you want to change the format string.  For instance, if you want to avoid y2k issues and use a 4-digit year instead, replace the "%g" with "%G"


0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 12

Expert Comment

by:stefan73
ID: 10843200
> strftime(timebuf,"%y%m%d %H%M",localtime(now));

should read

> strftime(timebuf,"%y%m%d %H%M",localtime(&now));

...as localtime expects a pointer.
0
 
LVL 22

Expert Comment

by:NovaDenizen
ID: 10843346
There's a mistake in my format fields.  The %g and %G give you the ISO 8601 bizarro year instead of the calender year, which you get through %y and %Y.  
0
 

Author Comment

by:John22
ID: 10844309
Thanks stefan73 and NovaDenizen.

I tried NovaDenizen code, but I got error. After I chaged time_t now_secs to time_t now and it worked fine.

I also tried stefan73. I also got error, but can't figure out. Here is the error:

cc -i test.c
"test.c", line 210: warning: improper pointer/integer combination: arg #1
"test.c", line 210: warning: improper pointer/integer combination: arg #2
"test.c", line 210: warning: argument #3 is incompatible with prototype:
        prototype: pointer to const char : "/usr/include/time.h", line 86
        argument : pointer to struct tm {int tm_sec, int tm_min, int tm_hour, int tm_mday, int tm_mon, int tm_year, int tm_wday, int tm_yday, i...
"test.c", line 210: prototype mismatch: 3 args passed, 4 expected
cc: acomp failed for test.c

Here is line 210:

strftime(timebuf,"%y%m%d %H%M",localtime(&now));

Thanks again.
John

0
 
LVL 22

Expert Comment

by:NovaDenizen
ID: 10844526
Don't forget to change my %g to %y.  It may give you the right answer now, but as soon as the financial year changes over it will give you the wrong answer.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question