0

I have a program that results in an integer array of variable size and I need to write the elements to a text file. The elements need to be on the same line in the file. This is a minimal example of what I am currently doing. I'm using the approach in this post https://stackoverflow.com/a/30234430/10163981

FILE *file = fopen("file.txt","w");
int nLines = 1000;
char breakstr[]="\n";

for(; ix<N;  ix++){
    char s[nLines*13];
    for(int jx = 0 ; jx<nLines; jx++){
        index += sprintf(&s[index],"%03i %03i %03i ", array[ix][jx],  array[ix][jx], array[ix][jx]); 
    // I need jx:th element in repeats of three, and may need to modify it externally for printing
    }
    fwrite(s,sizeof(char),strlen(s), file);
    fwrite(breakstr,sizeof(char),strlen(breakstr), file);
}
fclose(file);

I am formatting the array contents as a string and using fwrite, as this method has been given to me as a requirement. My problem is that this implementation that I am using is way too slow. I have also tried using shorter strings and writing for each iteration, but this even slower. There is not much I can do with regards to the outer ix loop, as the initial value of ix is variable. I included it for the same of completeness.

nLines is expected to reach as high as 10000 at most.

dan
  • 41
  • 5

0 Answers0