Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用sprintf时初始值设定项无效_C_Date_Printf - Fatal编程技术网

C 使用sprintf时初始值设定项无效

C 使用sprintf时初始值设定项无效,c,date,printf,C,Date,Printf,当我使用以下代码时: ... time_t timer; struct tm* tm_info; char day[3]; char month[3]; char year[5]; time(&timer); tm_info = localtime(&timer); strftime(day, 3, "%d",

当我使用以下代码时:

        ...

        time_t timer;
        struct tm* tm_info;
        char day[3];
        char month[3];
        char year[5];

        time(&timer);
        tm_info = localtime(&timer);

        strftime(day, 3, "%d", tm_info);
        strftime(month, 3, "%m", tm_info);
        strftime(year, 5, "%Y", tm_info);

char error_string_end[] = sprintf("Year: %s\n", year);

        ...
我得到以下错误:

my_file.c:15:27: error: invalid initializer
 15 | char string_end[] = sprintf("Year: %s\n", year);
    |                           ^~~~~~~
我确实是C的新成员,我直接尝试了printf,但是同样的错误也发生了


我试图做的是,我试图通过一些变量,首先将当前年份打印到屏幕上。因此,这就是我使用sprintf的原因。你似乎希望字符串可以用C语言赋值,但它不能。
您似乎还希望
sprintf()
返回一个字符串。它没有。
这就是编译器试图告诉您的,以及实际发生的事情之间的冲突。不能使用
sprintf()
返回的内容初始化字符数组

请阅读您使用的功能文档,例如

如果您想将字符串写入
char
数组(这基本上是可能的),则需要将其用作sprintf()的参数,根据

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

然后您将在
myInt
中找到打印字符数

为此,您当然需要确保目标缓冲区足够大。
也许像:

char error_string_end[100];
在前面的队伍里


但是,使用
snprintf()
是一种更方便的方法。

您似乎希望字符串可以在C中赋值。它不能。
您似乎还希望
sprintf()
返回一个字符串。它没有。
这就是编译器试图告诉您的,以及实际发生的事情之间的冲突。不能使用
sprintf()
返回的内容初始化字符数组

请阅读您使用的功能文档,例如

如果您想将字符串写入
char
数组(这基本上是可能的),则需要将其用作sprintf()的参数,根据

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

然后您将在
myInt
中找到打印字符数

为此,您当然需要确保目标缓冲区足够大。
也许像:

char error_string_end[100];
在前面的队伍里


但是,使用
snprintf()
是一种更方便的方法。

您是否阅读了
sprintf
的文档,特别是关于函数返回的内容?您应该参考
sprintf
的文档。您没有正确使用它。值得注意的是,数组初始值设定项看起来像
{…}
(和
“…”
),而不是函数调用。您是否阅读了
sprintf
的文档,特别是关于函数返回的内容?您应该查阅
sprintf
的文档。您没有正确使用它。值得注意的是,数组初始值设定项看起来像
{…}
(和
“…”
),而不是函数调用。然后声明/定义它或忽略返回值。我相应地延长了我的答案。去睡觉,睡觉。Return将于明天休息并阅读sprintf()的使用。也许除了文档之外还有教程。做一个好程序员的一部分就是知道什么时候睡觉。这甚至不是一个容易的部分。我很高兴以这种不同寻常的方式帮助你玩得开心。然后声明/定义它或忽略返回值。我相应地延长了我的答案。去睡觉,睡觉。Return将于明天休息并阅读sprintf()的使用。也许除了文档之外还有教程。做一个好程序员的一部分就是知道什么时候睡觉。这甚至不是一个容易的部分。我很高兴以这种不同寻常的方式帮助你玩得高兴