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

时间:2016-12-04 01:24:13

标签: c printf mpi output-formatting

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

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

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

如何恢复printf格式化产生的字符串,找出长度是多少,并将其作为char *传递给mpi函数?

1 个答案:

答案 0 :(得分:7)

看起来您希望将snprintf用于足够大的缓冲区。

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