0

printf我正在尝试以与使用语句类似的方式创建一个 char 数组。

如果我这样做:

printf("%d:%d:%.2f", hours, minutes, time);

它会准确地打印出我想要的样子。但是我现在正试图将它存储为一个变量。我一直在尝试执行类似于下面的代码行的操作,但是我收到 char 的“invalid initializer”错误。

我正在尝试做的事情:

char temp[] = ("%d:%d:%.2f", hours, minutes, time);

我也搞砸了strncat,也无法弄清楚。任何指导表示赞赏!

4

4 回答 4

2

您会想要sprintf,它与 相同printf,但会根据需要输出到字符串。

编辑snprintf确实更安全。(感谢特洛伊)

于 2013-10-05T21:15:39.097 回答
1

你可以使用snprintf

char temp[20];
snprintf(temp, sizeof(temp), "%d:%d:%.2f", hours, minutes, time);
于 2013-10-05T21:17:35.673 回答
1

你可以使用sprintf()snprintf()

int sprintf( char *restrict buffer, const char *restrict format, ... );

int snprintf( char *restrict buffer, int buf_size,const char *restrict format, ... );

   char temp[30];
   sprintf(temp,"%d:%d:%.2f", hours, minutes, time);
   printf("%s\n",temp);    

出于安全目的使用snprintf()如下

   char temp[30];
   snprintf(temp,sizeof temp,"%d:%d:%.2f", hours, minutes, time);
   printf("%s\n",temp);    
于 2013-10-05T21:18:46.597 回答
0

你可以用它snprintf来做到这一点。这正是您所需要的:

#include <cstdio>

char temp[50];
snprintf( temp, sizeof(temp), "%d:%d:%.2f", hours, minutes, time);
于 2013-10-05T21:18:17.553 回答