У меня есть процесс MPI, который мне нужно распечатать в файл. В системе MPI используются функциональные команды, такие как MPI_File_iwrite, которые принимают буфер (например, указатель символа) и целую длину. Затем буфер печатается в файл.Учитывая инструкцию printf в C, как мне построить буфер char * и узнать его длину?
Итак, чтобы распечатать то, что мне нужно для печати в файл, мне нужно как-то заменить функцию printf функцией, которая преобразует преобразование форматирования в буфер char *. Это проблематично, так как строки могут изменяться по длине ... например:
printf("something %d, %d, %d, %f, etc.",x,y,z,p,d,...);
Как восстановить строку, которая производит Printf форматирование, выяснить, что длина, и передать его как символ * к функция mpi?
1) 'printf' - это функция, а не инструкция. 2) 'printf' не генерирует строку (соответственно' char [] '. 3)' char * '- это указатель на' char', а не массив. – Olaf
Если 'printf()' делает что-то вроде 'printf ("% c ", 0);', а затем пытается использовать 's (n) printf (some_buffer, ...); len = strlen (some_buffer); 'не будет определять правильное количество напечатанных символов. Лучше всего использовать возвращаемое значение 'snprintf()'. – chux