
Originariamente inviata da
torn24
Io userei la funzione strcat()

per carità, non rendere O(n^2) operazioni che sarebbero O(n)
strcat non è praticamente mai la risposta.
@LuigiDaddario: il metodo "classico" per leggere un intero file in memoria (se stai leggendo un file di cui si può fare il seek) consiste i qualcosa del genere:
codice:
FILE *fp=fopen("file.txt", "rb");
if(!fp) {
// errore di apertura file
}
// Vado in fondo al file
fseek(fp, 0, SEEK_END);
// Mi faccio dire la posizione a cui sono (=> ottengo così le dimensioni del file)
size_t sz = ftell(fp);
// Alloco la memoria necessaria
char *s = malloc(s);
if(!s) {
// errore allocazione
}
// Leggo i dati
if(fread(fp, 1, sz, s)!=sz) {
// errore lettura
}
// ... qui faccio le cose ...
// libero la memoria
free(s);
Se invece il file che vai a leggere non fosse seekabile (come i file aperti in modalità testo su Windows, o le pipe o altri "file speciali" su Linux), il sistema classico consiste nel leggere a blocchi e riallocare man mano che si legge (tipicamente si va al raddoppio, in modo da raggiungere le dimensioni finali in tempo logaritmico).