2011-05-30 104 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类型)

链接的页面包含使用示例。该字符串必须预先分配。