2011-07-08 59 views
1

我使用C語言編寫網絡遊戲。我在文件中編寫了分數。我也想添加一天的日期。 下面是該文件的結構:日期姓名分數 和代碼:在文件中添加日期 - C

ScoreFile = fopen("scores.txt", "a"); 
fprintf(ScoreFile, "%s %d\n", Name, Score); 

我試過系統(「日期」),但它在標準輸出。我認爲我不能使用fprintf添加日期。

您是否知道允許在文件中添加日期的解決方案? (也許是從time.h的東西?)

非常感謝!

回答

1

考慮使用strftime將時間結構轉換爲字符串。

實施例(從上方連結):

#include <time.h> 
// ... 

char s[30]; 
size_t i; 
struct tm tim; 
time_t now; 
now = time(NULL); 
tim = *(localtime(&now)); 
i = strftime(s,30,"%b %d, %Y; %H:%M:%S\n",&tim); 

提出Jul 9, 2011; 17:55:55\ns

+0

由於它的作品!但文件中的日期:日期:2011年9月9日,星期六; 00:00:28是在兩行而不是隻有一行。有解決方案嗎? – lilawood

+0

如果我找不到,請刪除字符串末尾的\ n,否則我們需要看看你做了什麼。 – MByD

+0

我已經刪除\ n,它是完美的!謝謝:-) – lilawood

1

像這樣的東西應該工作

time_t now; 
time(&now); 

printf("... %s\n", ctime(&now)); 

如果你需要指定你自己的格式,看看strftime。如果您以後需要閱讀並解析它,則可能最好寫出自紀元以來的秒數(time_t,可能是ASCII?)。

+0

我們甚至被稱爲無功一樣,笑 –

1

最簡單的將是:

time_t now = time(NULL); 
fprintf(ScoreFile, "[%s] %s %d\n", ctime(&now), Name, Score); 
1

看一看strptime的strftimemktime from time.h.

爲了解析:

struct tm timeStruct = {0,0,0,0,0,0,0,0,0}; 
char *timeBuf = "03061983"; 
char *p = strptime(timeBuf, "%d%b%y", &timeStruct); 

if (p != NULL) 
{ 
    // manipulate timeStruct. 
    // use mktime to get the time_t value 
} 

這樣寫:

time_t t; 
    struct tm * timeStruct; 
    char timeBuf[6]; 

    time(&t); 
    timeStruct = localtime(&t); 

    strftime (timeBuf, 6, "%d%b%y", timeStruct) 

問候,
優素福