gpt4 book ai didi

c - vsnprintf 和 strerror : segmentfault?

转载 作者:行者123 更新时间:2023-11-30 19:19:29 27 4
gpt4 key购买 nike

我的代码如下:

#include <stdio.h>
#include <stdarg.h>
#include <errno.h>

int test(const char *fmt, ...);


int main(void)
{
int i;
errno = ERANGE;
const char *s = "test for vsnprintf";
test("%d,%s", i, strerror(errno));
}

int test(const char *fmt, ...)
{
char buf[512];
va_list args;
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
printf("%s\n", buf);
va_end(args);
}

上面的代码抛出了段错误,但是当我将 test("%d,%s", i, strerror(errno)) 替换为 test("%d, %s", i, s),程序运行良好,这里出了什么问题?

最佳答案

请记住阅读所有警告,并使用 -Wall -Wextra ^^ 进行编译。您忘记包含“< string.h >”,其中包含 strerror header 。它应该与它一起工作;)。是的,有时缺少包含确实会使您的代码出现段错误。

关于c - vsnprintf 和 strerror : segmentfault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24304892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com