//this file contains Vector and Matrix io functions #include "Header.h" //reads a vector from a stream // //returns Vec pointer at success //returns 0 if failed to read (can be used to know EOF for example) Vec * readVec(FILE * vecInFile) { int vectorSize, i; //if falied to read, return 0 if(fscanf(vecInFile, "%d", &vectorSize) == EOF) return 0; //validate vector size if(vectorSize <= 0) { printf("invalid vector format"); exit(1); } //create vector of size vectorSize Vec * vecP = createVec(vectorSize); //read to vector's float array for(i =0; i < vectorSize; i++) { fscanf(vecInFile, "%f", &(vecP->p[i])); } return vecP; } //prints out vector's values to a stream void writeVec(Vec * vecWriteP, FILE * outFile) { int i; fprintf(outFile, "%d\n", vecWriteP->n); for(i =0; i < vecWriteP->n; i++) { fprintf(outFile, "%g\n", vecWriteP->p[i]); } } //reades a matrix from a stream // //returns Mat pointer at success //returns 0 if failed to read (can be used to know EOF for example) Mat * readMat(FILE * matInFile) { //n: number of rows. m: number of columns. int n, m, i; //if falied to read, return 0 if(fscanf(matInFile, "%d", &n) == EOF) return 0; fscanf(matInFile, "%d", &m); //validate matrix size if(n <= 0 || m <= 0) { printf("invalid matrix format"); exit(1); } //create matrix of size n, m Mat * matP = createMat(n, m); //read to matrix's float array for(i =0; i < n*m; i++) { fscanf(matInFile, "%f", &(matP->p[i])); } return matP; } //prints out matrix values to a stream void writeMat(Mat * matP, FILE * outFile) { int i; fprintf(outFile, "%d\t%d\n", matP->n, matP->m); for(i =0; i < (matP->n*matP->m); i++) { fprintf(outFile, "%g\n", matP->p[i]); } }