Ciao a tutti. Ho problemi con la lettura di un file. Non posso utilizzare fopen fgets e compagne perchè il professore dice che non sono system calls... devo aprire il file con la "open". Il file in questione contiene caratteri e \n, cioè in poke parole quando ci scrivo scrivo la stringa e metto \n per far andare a capo. Come faccio a leggere riga per riga non sapendo quanti byte passare alla read poichè non so quanto è lunga una riga? Ho pensato di leggere char a char fino a trovare \n, ma se implemento una funzioncina che faccia questo ho segmentation fault. il codice della fiunzioncina è:

char* leggiLinea(int fd)
{
char* stringa;
char char_letto[1];
stringa = "";
do
{
read(fd, char_letto, sizeof(char));
strcat(stringa, char_letto);
} while ( strcmp(char_letto, "\n") == 0 );
return stringa;
}

ovviamente quando la chiamo il file è già aperto, e ho allocato memoria per la stringa. Cosa c'è che non va?
E inoltre, come faccio a farmi restituire NULL se il file pointer è alla fine del file e la funzione tenta di leggere?
grazie ciao