Dear All,
When I tried to print a long string using PetscPrintf() I found that it truncated the string. Attached is a simple example for this (run with single processor). I used PetscPrintf() and printf() to print the same string and the printf() seems OK. I am using petsc-3.8.4.
Best, Rongliang
#include <stdlib.h> #include <string.h> #include <petsc.h> static char help[] = "Test"; int main(int argc,char **args) { PetscErrorCode ierr; PetscInt i, j; PetscInt num = 200; PetscInt n = 20; char* synccelldf; char piece[500]; PetscMPIInt rank; ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr); ierr = PetscMalloc(500*num*sizeof(char),&synccelldf);CHKERRQ(ierr); ierr = PetscMemzero(synccelldf, 500*num*sizeof(char));CHKERRQ(ierr); for (i=0; i<num; i++) { sprintf(piece, "[%d] %d %d %d ", rank, i, i+1, i+2); strcat(synccelldf, piece); for (j=0; j<n; j++) { sprintf(piece, "%d ", j); strcat(synccelldf, piece); } sprintf(piece, "\n"); strcat(synccelldf, piece); } ierr = PetscPrintf(PETSC_COMM_WORLD, "PetscPrintf results: \n");CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD, "%s \n", synccelldf);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD, "\n\nPrintf results: \n");CHKERRQ(ierr); printf("%s \n", synccelldf); ierr = PetscFinalize(); return ierr; }