#include #include #include void writeTotxt(int rows, int columns, double array[rows][columns], char *filename, int commaSeperated, int tabSeperated); int main(int argc, char const *argv[]){ double **pointsArray; char binaryFilename[200], textFilename[200]; int commaSeperated = 0, tabSeperated = 0; int seperationMethod, numberOfRows, numberOfColumns; printf("Seperate values with:\n\t[0] Space (default)\n\t[1] Comma\n\t[2] Tab\nInput = "); scanf("%d", &seperationMethod); switch(seperationMethod){ case 1 : commaSeperated = 1; break; case 2 : tabSeperated = 1; break; } printf("\nArray rows = "); scanf("%d", &numberOfRows); printf("\nArray columns = "); scanf("%d", &numberOfColumns); pointsArray = (double **)(malloc(numberOfRows * sizeof(double *))); for (int i = 0; i < numberOfRows; ++i){ pointsArray[i] = (double *)(malloc(numberOfColumns * sizeof(double))); } printf("\nBinary filename = "); scanf("%s", binaryFilename); printf("\nText filename = "); scanf("%s", textFilename); FILE *pointsBinaryFile; pointsBinaryFile = fopen(binaryFilename,"rb"); if(fread(&pointsArray, sizeof(double), numberOfRows * numberOfColumns, pointsBinaryFile) != numberOfRows * numberOfColumns) { if(feof(pointsBinaryFile)) printf("There were usefull info after the end of file.\n"); else printf("File read error.\n"); return 1; } fclose(pointsBinaryFile); for (int i = 0; i < numberOfRows; ++i){ for (int j = 0; j < numberOfColumns; ++j){ printf("%f\n", pointsArray[i][j]); } } FILE *file = fopen(textFilename, "w"); if (file == NULL){ printf("Error opening file!\n"); exit(1); } for (int i = 0; i < numberOfRows; ++i){ for (int j = 0; j < numberOfColumns; ++j){ fprintf(file, "%f", pointsArray[i][j]); if (j != numberOfColumns - 1){ if (commaSeperated){ fprintf(file, ", "); } else if (tabSeperated){ fprintf(file, "\t"); } else { fprintf(file, " "); } } } fprintf(file, "\n"); } fclose(file); printf("Done! Press any key to exit.\n"); getchar(); }