我有一个 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/