日期打印和扫描

Date printing and scanning

我想从单个 variable/array 格式的文本文件中读取日期:

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)); 

但不起作用....

您可以使用 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) { .... }

在 POSIX 中,您可以使用 strptime() 将日期解析为 struct tm.

类型的值

您首先从文件中读取整行文本(fgets() 是最好的选择),然后将其传递给 strptime()

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