2015-02-05 188 views
1

我想在此格式的單個變量/陣列讀取從文本文件日期:日期打印和掃描

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 : 

打印它們並更新到當前日期。

有沒有辦法做到這一點?

編輯:我試着用:

​​

但不工作....

+0

掃描日期Thu Feb 05 16:48:30 2015 in savegame.txt的單個變量 – 2015-02-05 15:25:08

+1

[如何將字符串解析爲C中的日期時間結構?](http://stackoverflow.com/問題/ 2722606 /如何解析一個字符串到一個日期時間結構在C) – alk 2015-02-05 17:51:56

回答

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) { .... } 
+0

res的類型是? – 2015-02-05 16:05:46

+1

'fscanf()'返回成功轉換的數量(一個'int')。 – 2015-02-05 16:09:20

1

POSIX格式,您可以分析使用strptime()日期,轉換爲struct tm類型的值。

您首先要從文件中讀取整行文本(fgets()是最佳選擇),然後將其傳遞給strptime()

如果行上有靜態非日期文本,則需要先跳過。如果它是靜態的,您可以將其長度添加到指向該行的指針,並將其傳遞到strptime()。你也可以包括格式字符串中的文本到strptime(),它會被跳過。

+0

是的,但我的文件有一些靜態文本,如:已播放日期:Thu Feb 05 16:48:30 2015 – 2015-02-05 16:10:30

+0

@SzokeLori:如果你知道靜態文本,你可以用'strptime()'格式編寫它,它會讀取過去。 – 2015-02-05 17:12:26