2011-05-30 66 views
1

我基本上是試圖讓時間爲const char *與問題在C

struct timeval tv = { }; 
gettimeofday(&tv, NULL); 

和它的作品。問題是,是要接受作爲參數時的功能類型爲const char *相關

,所以我做

const char *time; 
time = &tv.tv_sec; 

的問題是,tv.tv_sec是time_t類型和我的需要插上

const char *time 

到它傳遞給需要爲const char *

我怎麼做它的功能?將一個整數轉換爲一個常量字符* 我嘗試了一些簡單的方法來鑄造它,但是我不是那種經驗豐富的C

+0

你的意思是說你想將'time_t'轉換成一個字符串,然後把字符串發送到一個接受字符串作爲參數的函數? – rid 2011-05-30 11:06:28

+0

您將不得不將秒(它是一個整數)轉換爲一個字符串,並通過它。 – 2011-05-30 11:07:36

回答

2

要將整數格式化爲字符串,您應該使用snprintf

例如:

char resultString[64]; 

snprintf(resultString, sizeof(resultString), "Current time : %d", tv.tv_sec); 
+0

是的,我得到 db-mysql.c:144:2:warning:傳遞'snprintf'參數1使得整形指針沒有強制轉換 /usr/include/bits/stdio2.h:62:1:note :期望'char * __restrict__',但參數的類型爲'char' db-mysql。c:144:2:warning:format'%d'expect type'int',but argument 4 has type''__time_t' db-mysql.c:144:2:warning:format'%d'expectins'int' ,但是論點4的類型是'__time_t' – dikidera 2011-05-30 11:11:11

+0

@dikidera:那麼,你在那裏做了一件非常錯誤的事情。你應該在你的問題中發佈完整的代碼。 – 2011-05-30 11:12:51

+0

這就是它基本上 ** const char timee; const char * timer; ' gettimeofday(&tv,NULL); (timee,sizeof(timee),「%d」,tv.tv_sec); 計時器= &timee; ** – dikidera 2011-05-30 11:14:14

5

當您發現自己需要將時間指針轉換爲字符指針時,這表明存在非常錯誤的提示。你應該再看看這個問題。

你沒有描述接受const char *的其他函數,或者我會更好地瞭解發生了什麼。

我懷疑你可能需要將時間整數轉換爲字符串並將指針傳遞給該字符串的開頭。要做到這一點,您可能需要使用一個名爲strftime的函數。

1

直接可用的C函數是:

  • ctime(輸入爲time_t類型)
  • asctime(輸入爲struct tm類型)

如果你需要過格式使用d控制:

  • strftime(輸入爲struct tm類型)

鏈接的頁面包含使用示例。該字符串必須預先分配。