我想以这种格式从单个变量/数组中的文本文件中读取日期:
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));
但不起作用....
答案 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) { .... }