Hola, soy nuevo en el foro, pero creo que te puedo ayudar con esto.
En realidad tienes varios problemillas.
Una sentencia la terminaste con , en lugar de ;
Declaras la variablec dentro del bucle while, hazlo fuera.
Siempre que trabajes con archivos trata de leer la cadena/caracter al final del bucle para que realmente pueda verificar si has llegado al final del archivo, he visto muchos problemas cuando leen al principio, como que no sale del bucle, o te arooja basura, y cosas por el estilo. bueno aqui te dejo tu codigo con algunos cambios que le hize, ya funciona correctamente.
Código:
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE* archivo = fopen("archivo.txt","r");
char * buffer = NULL;
int i, c;
c = fgetc(archivo);
while(!feof(archivo))
{
buffer = (char*)realloc(NULL, sizeof(char));
i = 0;
while( c != '\n')
{
buffer[i] = c;
i++;
buffer = (char*)realloc(buffer, (i+1)*sizeof(char));
c = fgetc(archivo);
}
/*Agrego el \n al buffer*/
buffer = (char*)realloc(buffer, (i+2)*sizeof(char));
buffer[i] = c;
buffer[i+1] = 0;
/*Trabajar con el buffer*/
printf("%s", buffer);
free(buffer);
c = fgetc(archivo);
}
close(archivo);
}
Saludos = 0;