diff --git a/CMakeLists.txt b/CMakeLists.txt index 77b4dde..808b8e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,6 @@ add_executable(NameSort src/main.c src/name_string.c src/string_vector.c include/name_string.h - include/string_vector.h) + include/string_vector.h include/file_io.h src/file_io.c) target_include_directories(NameSort PRIVATE ${CMAKE_SOURCE_DIR}/include) \ No newline at end of file diff --git a/include/file_io.h b/include/file_io.h new file mode 100644 index 0000000..53b001d --- /dev/null +++ b/include/file_io.h @@ -0,0 +1,13 @@ +// +// Created by Aargo on 10/17/2019. +// + +#ifndef NAMESORT_FILE_IO_H +#define NAMESORT_FILE_IO_H + +#include + +char *read_line(FILE *file, int *eof_reached); +void read_file_into_vector(FILE *file, string_vector *vector); + +#endif //NAMESORT_FILE_IO_H diff --git a/src/file_io.c b/src/file_io.c new file mode 100644 index 0000000..f80626c --- /dev/null +++ b/src/file_io.c @@ -0,0 +1,53 @@ +#include +#include + +#include + +char *read_line(FILE *file, int *eof_reached) +{ + char *lineBuffer = malloc(sizeof(char) * MAX_STR_SIZE + 1); + + int ch = getc(file); + int count = 0; + while((ch != '\n') && (ch != EOF)) + { + if(count == MAX_STR_SIZE) + { + fprintf(stderr, + "Encounted name that is too long. Max name length is %d!\n", + MAX_STR_SIZE); + exit(2); + } + lineBuffer[count] = (char)ch; + count++; + ch = getc(file); + } + if(ch == EOF) + { + *eof_reached = 1; + } + lineBuffer[count] = '\0'; + return lineBuffer; +} + +void read_file_into_vector(FILE *file, string_vector *vector) +{ + if(!file || !vector) + { + fprintf(stderr, "Invalid File Or Memory Error\n"); + return; + } + int eof_reached = 0; + while(!eof_reached) + { + char *line = read_line(file, &eof_reached); + string *str = strip(create_from_cstr(line)); + free(line); + if(str->len == 0) + { + destroy_string(str); + continue; + } + vector_add(vector, str); + } +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 6b6d58c..6d90aac 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -31,55 +32,6 @@ void perform_length_alphabet_sort(string_vector *vector) qsort((void *) vector->array, vector->size, sizeof(string *), compare); } -char *read_line(FILE *file, int *eof_reached) -{ - char *lineBuffer = malloc(sizeof(char) * MAX_STR_SIZE + 1); - - int ch = getc(file); - int count = 0; - while((ch != '\n') && (ch != EOF)) - { - if(count == MAX_STR_SIZE) - { - fprintf(stderr, - "Encounted name that is too long. Max name length is %d!\n", - MAX_STR_SIZE); - exit(2); - } - lineBuffer[count] = (char)ch; - count++; - ch = getc(file); - } - if(ch == EOF) - { - *eof_reached = 1; - } - lineBuffer[count] = '\0'; - return lineBuffer; -} - -void read_file_into_vector(FILE *file, string_vector *vector) -{ - if(!file || !vector) - { - fprintf(stderr, "Invalid File Or Memory Error\n"); - return; - } - int eof_reached = 0; - while(!eof_reached) - { - char *line = read_line(file, &eof_reached); - string *str = strip(create_from_cstr(line)); - free(line); - if(str->len == 0) - { - destroy_string(str); - continue; - } - vector_add(vector, str); - } -} - int main(int argc, char **argv) { if(argc < 2)