this is my get_line function:
my questions are; does the i++ in the buffer need to be done or does the while loop update i when EOF or '\n' is encountered, and if the first input is the EOF, will NULL be returned as in the last statement?Code:#define BUFFER_SIZE 1 char *get_line(FILE *file) { FILE *fp = file; char *buffer; int ch, i=0; unsigned int buffer_size = BUFFER_SIZE, new_buffer_size; assert(buffer_size > 0); buffer = (char *) malloc (buffer_size * sizeof (char)); while ((ch = getc(fp)) != EOF && ch != '\n') { if (buffer_size == i) { new_buffer_size = buffer_size * 2; assert(new_buffer_size >= buffer_size); buffer = (char *) realloc (buffer, new_buffer_size * sizeof (char)); buffer_size = new_buffer_size; } buffer[i] = ch; i++; } if (ch == '\n') { buffer[i++] = '\0'; return buffer; /*finish it off with a null byte*/ } if ((ch == EOF) && (i > 1)) { buffer [i++] = '\0'; return buffer; } else { return NULL; } }