我有一个MPI进程需要打印到文件。 MPI系统使用MPI_File_iwrite等功能命令,它接受缓冲区(例如char指针)和整数长度。然后,缓冲区将打印到文件中。
因此,为了打印我需要打印到文件的内容,我需要以某种方式用一个将格式转换映射到char *缓冲区的函数替换printf函数。这是有问题的,因为字符串的长度可能不同......例如:
printf("something %d, %d, %d, %f, etc.",x,y,z,p,d,...);
如何恢复printf格式化产生的字符串,找出长度是多少,并将其作为char *传递给mpi函数?
答案 0 :(得分:7)
看起来您希望将snprintf
用于足够大的缓冲区。
如果缓冲区足够大,则snprintf
的返回值等于打印的字符数。您可以将输出字符串的长度计算为缓冲区大小的最小值和snprintf
的返回值。