gpt4 book ai didi

c - fmemopen 不写入 c 字符串

转载 作者:行者123 更新时间:2023-11-30 15:36:35 25 4
gpt4 key购买 nike

我无法让 fmemopen 一致地打印到 cstring。做这样的事情:

#include <stdio.h>
#include <string.h>

int main(void)
{
char buf[256];
FILE *out;

out = fmemopen(buf, strlen(buf), "w");
fprintf(out, "Hello world");
fclose(out);
puts(buf);

return 0;
}

仅产生“H”输出。

我尝试使用 open_memstream

#include <stdio.h>
#include <string.h>

int main(void)
{
char *buf;
int buf_size;
FILE *out;

out = open_memstream(&buf, &buf_size);
fprintf(out, "Hello world");
fflush(out);
puts(buf);
free(buf);
fclose(out);

return 0;

}

这似乎有效,但在其他情况下似乎会出现段错误。

如何让 fmemopen 持续工作和/或如何丢失从 open_memstream 返回的指针值的跟踪?

编辑:在仔细查看我的代码后,我发现 open_memstream 是如何出现段错误的。我仍然想知道为什么 fmemopen 不起作用。

最佳答案

根据你的第一段代码:

调用 strlen(buf) 会调用未定义的行为,因为 buf 的内容未定义。请改用 sizeof(buf)

关于c - fmemopen 不写入 c 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515676/

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