gpt4 book ai didi

在 C 中将 void 方法的输出转换为 String

转载 作者:行者123 更新时间:2023-11-30 18:40:55 25 4
gpt4 key购买 nike

我写了一个 void 函数,它接受一个无符号整数。然后我在主函数中调用它。我希望输出是一个字符串,以便我可以将其包含在 printf 中格式原因的声明。但由于我正在调用一个 void 函数,所以我无法告诉 printf它是一个字符串 (%s)或一个 int (%d) 。我怎样才能从我的 main 中调用 void 函数获取输出并将其转换为某种字符串或整数?

最佳答案

声明为例如的函数void foo(int); 没有结果。因此您无法将其不存在的结果转换为整数或字符串。

请注意,C 没有严格意义上的字符串 数据类型。您使用指向由 char 组成的内存区域的指针,并遵循零终止字符串的约定。

也许您想获得输出(使用printffprintffputs和其他stdio(3)完成标准库函数)作为字符串的函数。在 Linux(和 GNU libc)系统上,您可以使用 open_memstream(3)

不要将函数的输出与其结果混淆!

假设您已经编写了一些输出函数,例如

void show_x(FILE*out, int x) { fprintf(out, "x=%d\n", x); }

然后你可以使用以下方法将其转换为像 ptrbuf (在 Linux 上)这样的字符串:

char*ptrbuf=NULL;
size_t sizbuf=0;
FILE* outmem = open_memstream(&ptrbuf, &sizbuf);
if (!outmem) { perror("open_memstream"); exit(EXIT_FAILURE); };
show_x(outmem, 42);
fflush(outmem);
printf ("now ptrbuf is %s\n", ptrbuf);
fclose(outmem);
// you later should free the `malloc`-ed `ptrbuf`
free (ptrbuf), ptrbuf=NULL;
sizbuf=0;

关于在 C 中将 void 方法的输出转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24359389/

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