L'assegnazione è valida: un puntatore può puntare ad un letterale stringa.Originariamente inviato da Ephestus
Non puoi assegnare "" ad un puntatore (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.