Originariamente inviato da Ephestus
Non puoi assegnare "" ad un puntatore (stringa)
L'assegnazione è valida: un puntatore può puntare ad un letterale stringa.

L'errore sta in:

strcat(stringa, char_letto);

qui: http://www.cplusplus.com/ref/cstring/strcat.html

pui leggere la documentazione della funzione strcat. Questa funzione appende la seconda stringa alla prima passata come argomento, che deve già avere lo spazione suffiente a contenere la seconda. Quindi è necessario che la prima stringa sia:

1 - un array grande abbastanza: char stringa[100] che prima della concatenzazioe contiene una stringa con meno di 99 caratteri e quindi c'è ancora spazio per aggiungere caratteri

2 - oppure un puntatore ad un blocco di memoria allocato dinamicamente con malloc, conla stessa condizione di prima.

Ma se tale blocco di memoria o array deve essere grande abbastanza da rendere possibile la concatenazione significa che già a priori dovresti sapere la dimensione totale della riga da leggere e quindi siamo allo stesso problema iniziale.

Ciò che puoi fare è:

- utilizzre un array sufficientemente grande che sai gia a priori potrà contenere la riga e utilizzare la fgets che legge fino al prossimo carattere di fine linea:

http://www.cplusplus.com/ref/cstdio/fgets.html

è necessario che l'array che le passi sia grande a sufficiente per contenere tutti i caratteri dell a riga che viene comuinque individuata dalla funzione, quindi te non devi preoccuparti di trovare il carattere di fine linea;

- oppure scorrere la riga leggendo caratteri fino al prossimo \n, quindi allocarti un array di quella dimensione, tornare indietro nel file e leggere la riga con fread o fgets. Ciò è utile per leggere righe di qualsiasi dimensione nel caso non hai idea di quanto possano essere lunghe.

In c++ si puo fare piu facilmente.