char* fgetline(FILE* fp) { size_t size = 0; char* line = malloc(size++); char buf = ' '; while (((buf = fgetc(fp)) != '\n') && buf != EOF) { line = realloc(line, ++size); line[size - 1] = buf; } if (size > 1) { line[size] = '\0'; } return line; }