c - 给定 C 中的 printf 语句,我如何构造一个 char * 缓冲区,并知道它的长度?

标签 c printf mpi output-formatting

我有一个 MPI 进程需要打印到一个文件中。 MPI 系统使用像 MPI_File_iwrite 这样的功能命令,它接受一个缓冲区(例如一个字符指针)和一个整数长度。然后,缓冲区被打印到文件中。

因此,为了将我需要打印的内容打印到文件中,我需要以某种方式将 printf 函数替换为将格式转换映射到 char * 缓冲区的函数。这是有问题的,因为字符串的长度可能不同......例如:

printf("something %d, %d, %d, %f, etc.",x,y,z,p,d,...);

如何恢复 printf 格式生成的字符串,计算出长度,并将其作为 char * 传递给 mpi 函数?

最佳答案

看起来你想使用 snprintf到足够大的缓冲区。

如果缓冲区足够大,snprintf 的返回值等于打印的字符数。您可以将输出字符串的长度计算为缓冲区大小和 snprintf 的返回值中的最小值。

关于c - 给定 C 中的 printf 语句,我如何构造一个 char * 缓冲区,并知道它的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40954399/

相关文章:

c - 什么 C 源代码将编译为针对 GOT 中另一个指针的调用 *get_func@GOTPCREL(%rip) 和 cmp?

从 argv 文件创建结构,并将内容打印到具有单独 header 的一个主文件中

c++ - 打印 NaN 值

MPI:内核还是处理器?

ubuntu - MPI_Init() 在 Raspberry Pi 4 上立即崩溃

c - Linux C 如何为 http 响应 block 动态分配内存?

c++ - MPI_Op_create : candidate function not viable. 自定义结构指针不能解释为空指针

c - 将相同的文本添加到 C 文件中每一行的末尾

java - printf 模板的格式错误字符串问题

c++ - 使用 MPI 在超立方体中广播