C中的const char *问题

时间:2011-05-30 11:03:31

标签: c casting

我基本上是想用

来抽出时间
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 *

的函数

我该怎么做?将整数放入const char * 我已经尝试过一些简单的方法来投射它,但是我不熟悉C

4 个答案:

答案 0 :(得分:5)

当你发现自己需要将时间指针强制转换为char指针时,这是一个非常错误的暗示。你应该再看一下这个问题。

您没有描述接受const char *的其他函数,或者我会更好地了解正在发生的事情。

我怀疑您可能需要将时间整数转换为字符串并将指针传递给该字符串的开头。为此,您可能希望使用名为strftime的函数。

答案 1 :(得分:2)

要将整数格式化为字符串,您应该使用snprintf

例如:

char resultString[64];

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

答案 2 :(得分:1)

可直接使用的C函数是:

  • ctime(输入类型为time_t
  • asctime(输入类型为struct tm

如果您需要控制格式使用:

  • strftime(输入类型为struct tm

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

答案 3 :(得分:0)

检查sprintfsnprintf