From d3ee58ed3983e99e36da6c4fcf1fffa3a64e8b19 Mon Sep 17 00:00:00 2001 From: Luis Morales Date: Sun, 6 Dec 2020 21:12:47 -0500 Subject: [PATCH 1/2] New function called txtIntoBin --- src/csv2bin.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/csv2bin.c b/src/csv2bin.c index 00cbc24..8957bdc 100644 --- a/src/csv2bin.c +++ b/src/csv2bin.c @@ -216,4 +216,51 @@ int readBINFile(tfile *tsf){ return 0; } +int txtIntoBin(tfile *ftxt, tfile *fbin){ + FILE *ftx, *fbi; + char line[MAXCHAR]; + char *ftxname, *fbiname, *linebi; + int lline + + /* Make up txt filename */ + ftxname = (char *)malloc(strlen(ftxt->dirname) + strlen(ftxt->filename)); + strcpy(ftxname, ftxt->dirname); + strcat(ftxname, ftxt->filename); + + /* Make up bin filename */ + fbiname = (char *)malloc(strlen(fbin->dirname) + strlen(fbin->filename)); + strcpy(fbiname, fbin->dirname); + strcat(fbiname, fbin->filename); + + /* Open txt file */ + if ((ftx = fopen(ftxname,"r")) == NULL){ + printf("Error opening %s txt file, stopping... \n", ftxname); + return -1; + } + + /* Open bin file */ + if ((fbi = fopen(fbiname,"wb")) == NULL){ + printf("Error opening %s bin file, stopping... \n", fbiname); + return -1; + } + + /* Read the txt file and write into bin */ + while (fgets(line, MAXCHAR, ftx) != NULL){ + + lline = strlen(line)-1; + linebi = (char *)malloc(lline * sizeof(char)); + strcpy(linebi, line); + + fwrite(linebi, lline*sizeof(char), 1, fbi ); + + free(linebi); + + } + + fclose(ftx); + fclose(fbi); + free(ftxname); + free(fbiname); + +} From 2b861446742830c47227bb95ed6478102020e4ea Mon Sep 17 00:00:00 2001 From: Luis Morales Date: Tue, 8 Dec 2020 05:54:14 -0500 Subject: [PATCH 2/2] finish txtIntoBin function --- bin/csv2bin | Bin 27808 -> 30560 bytes inc/csv2bin.h | 6 ++++++ src/csv2bin.c | 11 ++++++++--- src/main.c | 8 +++++--- test/ts.bin | Bin 101721 -> 128444 bytes 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/bin/csv2bin b/bin/csv2bin index c2842efe83a19be0e5a81a47380479a98f102a1e..40ba14c8e220d0dbef1d585b36ad3ed61c18e272 100755 GIT binary patch delta 11022 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 F{{z6;oIL;l delta 8165 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 diff --git a/inc/csv2bin.h b/inc/csv2bin.h index 88f2f25..cfb9dae 100644 --- a/inc/csv2bin.h +++ b/inc/csv2bin.h @@ -50,4 +50,10 @@ Read and display bin file with tserie */ int readBINFile(tfile *tsf); +/* +Function to save a txt file into binary format. +*/ +int txtIntoBin(tfile *ftxt, tfile *fbin); + + #endif diff --git a/src/csv2bin.c b/src/csv2bin.c index 8957bdc..8c04ee7 100644 --- a/src/csv2bin.c +++ b/src/csv2bin.c @@ -216,12 +216,15 @@ int readBINFile(tfile *tsf){ return 0; } +/* +Function to save a txt file into binary format. +*/ int txtIntoBin(tfile *ftxt, tfile *fbin){ FILE *ftx, *fbi; char line[MAXCHAR]; char *ftxname, *fbiname, *linebi; - int lline + int lline; /* Make up txt filename */ ftxname = (char *)malloc(strlen(ftxt->dirname) + strlen(ftxt->filename)); @@ -248,7 +251,8 @@ int txtIntoBin(tfile *ftxt, tfile *fbin){ /* Read the txt file and write into bin */ while (fgets(line, MAXCHAR, ftx) != NULL){ - lline = strlen(line)-1; + lline = strlen(line); + printf("le = %d\n",lline); linebi = (char *)malloc(lline * sizeof(char)); strcpy(linebi, line); @@ -261,6 +265,7 @@ int txtIntoBin(tfile *ftxt, tfile *fbin){ fclose(ftx); fclose(fbi); free(ftxname); - free(fbiname); + free(fbiname); + return 0; } diff --git a/src/main.c b/src/main.c index 4f9b9ba..7555fb6 100644 --- a/src/main.c +++ b/src/main.c @@ -56,13 +56,15 @@ int main(int argc, char *argv[]) #endif #endif - /* Freeing heap memory */ - /*freeMemCSV(&ts);*/ - /* Allocate header array */ + /* Free allocated array */ + free(data); for(i = 0; i < NHEADER; i++){ free(header[i]); } + + + txtIntoBin(&tsf, &tsfb); return 0; } diff --git a/test/ts.bin b/test/ts.bin index bb0e90b49ea4099f4b74cc3c1f9e41abfccf8a3a..4faaf3ea539034a432563d6c1f56b18021ad52b8 100644 GIT binary patch literal 128444 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 a=kCv_Xu$pRKVJ8TT+zkzsAx>*ivJ(@499f< literal 101721 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