Ciao a tutti!
Sto incontrando qualche problema con un programma che, da un file, prende in input delle stringhe e le stampa in un altro file.
Nel programma uso un array di stringhe per memorizzare le stringhe del file base e lo stesso array viene usato per stampare il tutto. Il problema è che, nel secondo file (quello in cui stampo le stringhe ricevute in input dal file base), viene stampata solo la prima stringa: le altre non vengono stampate. Ecco il programma:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXROW 100 ///definisco il massimo di righe dell'array di stringhe
#define MAXCOLUMN 100 ///definisco il massimo di colonne dell'array di stringhe
int main(){
char testo[MAXROW][MAXCOLUMN]; ///dichiarazione dell'array di stringhe
int i; ///contatore
FILE *filepntrR = NULL; ///puntatore al file dal quale leggo le stringhe
FILE* filepntrW = NULL; ///puntatore al file nel quale scrivo le stringhe prese da filepntrR
/**
Apro i file, in modalità (rispettivamente) di lettura e scrittura,
ed esco se il puntatore contiene NULL dopo averlo provato ad aprire
**/
filepntrR = fopen("c:/users/utente/desktop/test.txt", "r");
filepntrW= fopen("c:/users/utente/desktop/testmod.txt", "w");
if(filepntrR == NULL || filepntrW == NULL){
printf("Errore");
exit(EXIT_FAILURE);
}
/**
Assegno la stringa "nulla" a tutte le stringhe dell'array testo[]
**/
for(i = 0; i < MAXROW; i++){
strcpy(testo[i], "nulla");
}
/**
In questo ciclo, che si ferma quando la variabile i raggiunge il valore di MAXROW,
prendo in input la stringa con gli spazi, memorizzandola nella variabile testo[] e
vado a capo
**/
for(i = 0; i < MAXROW; i++){
fscanf(filepntrR, "%[^\n]s\n", testo[i]);
}
/**
In questo ciclo, che si ferma quando la variabile i raggiunge il valore di MAXROW,
stampo il contenuto delle stringhe della variabile testo[] nel file filepntrW
**/
for(i = 0; i < MAXROW; i++){
fprintf(filepntrW, "%s\n", testo[i]);
}
///Chiudo i file utilizzati
fclose(filepntrR);
fclose(filepntrW);
return 0;
}
Il file dal quale traggo i dati è un file che ho creato io in cui ho scritto caratteri a casaccio (niente caratteri speciali e qualche spazio tra una "parola" e l'altra: un file innocuo, sostanzialmente).
Il compilatore non segnala né errori né warning, quindi sono un po' confuso. Se può servire, le stringhe che dovrebbero contenere i caratteri che ho scritto nel file base contengono il valore di inizializzazione (ovvero la sringa "nulla") e, in una versione precedente del programma, il compilatore segnava un warning nella fscanf (non gli piaceva lo specificatore %[^\n]s).
Please help me, I'm losing my mind Cosa sto sbagliando?
EDIT: aggiunto ciclo che inizializza l'array delle stringhe