日期打印和扫描

时间:2015-02-05 15:20:35

标签: c file date printing

我想以这种格式从单个变量/数组中的文本文件中读取日期:

Thu Feb 05 16:48:30 2015  

打印我用过:

fprintf (savegame,"Played Date : %s ",ctime(&time1));

但要做什么扫描?

编辑:

好的。所以我可能说了一些非常错误的事情,所以我会像我从学校得到的任务一样重新制定......:

我有一个包含以下内容的文本文件:

 Played Date : Thu Feb 05 16:48:30 2015
 Played Date : Thu Jan 01 02:00:00 1970

我想将它们分别放在一个变量中,然后删除

 Played Date : 

打印它们并更新到当前日期。

有没有办法做到这一点?

编辑:我尝试过:

fscanf (savegame,"Played Date : %s ",ctime(&time1)); 

但不起作用....

2 个答案:

答案 0 :(得分:1)

在POSIX中,您可以使用strptime()将日期解析为struct tm类型的值。

您首先阅读文件中的整行文字(fgets()是最佳选择),然后将其传递给strptime()

如果您在该行上有静态非日期文本,则需要先跳过该文本。如果它是静态的,您可以将其长度添加到指向该行的指针,并将其传递给strptime()。您还可以将格式字符串中的文本包含在<{1}}中,并且会跳过它。

答案 1 :(得分:0)

您可以使用strftime()打印任何日期时间格式,因此您可能会使用更便于扫描的格式。我认为ctime()依赖于语言环境,所以在具有不同设置的不同PC上,WeekDay和Month可以有不同的拼写(因为语言)。

但是你可以使用你的格式(我的变量名应该改变):

      res = fscanf(FP,"%3s %3s %d %d:%d:%d %d",dayStr, monStr, &day, &hour, &min, &sec, &year);

然后用

检查格式
      if (res == 7) { .... }