Ciao a tutti,
sono riuscito a far funzionare la scrittura.
Ho utilizzato la fopen ed ora funziona.
Ora volevo provare a leggere un file riga per riga.
Ho scritto questo codice qua:
Codice:
file=fopen(fileUtenti, "r");
if(file!=NULL){
struct Persona pers;
i=1;
while(fscanf(file,"Nome: %s; Cognome: %s\n", pers.nome, pers.cognome)!=EOF){
printf("%d) Nome: %s; Cognome: %s\n", i, pers.nome, pers.cognome);
i++;
}
fclose(file);
}else{
printf("Ci sono stati errori nella apertura del file %s, errno: %d\n", fileUtenti, strerror(errno));
}
Il file viene aperto correttamente però a runtime ci sono parecchi problemi. In pratica vengono stampate di continuo delle righe:
Quote:
9198) Nome: Salvatore_Luca;; Cognome: u
9199) Nome: Salvatore_Luca;; Cognome: u
9200) Nome: Salvatore_Luca;; Cognome: u
9201) Nome: Salvatore_Luca;; Cognome: u
9202) Nome: Salvatore_Luca;; Cognome: u
9203) Nome: Salvatore_Luca;; Cognome: u
9204) Nome: Salvatore_Luca;; Cognome: u
9205) Nome: Salvatore_Luca;; Cognome: u
9206) Nome: Salvatore_Luca;; Cognome: u
|
quando il file è formato solo da pochissime righe (contenuto file):
Quote:
Nome: Salvatore_Luca; Cognome: Pippo
Nome: Angelo; Cognome: Poldo
Nome: paolo; Cognome: poggi
Nome: n; Cognome: N
Nome: Andrea; Cognome: Barzagli
Nome: Juri; Cognome: Gagarin
Nome: p; Cognome: p
Nome: a; Cognome: a
Nome: p; Cognome: p
Nome: n; Cognome: n
Nome: u; Cognome: u
|
In pratica vengono uniti il primo nome con l'ultimo cognome.
Le righe vengono inserire all'interno del file in questo modo:
Codice:
FILE* file;
char* fileUtenti="utenti.txt";
file=fopen(fileUtenti, "a");
if(file!=NULL){
do{
struct Persona pers;
printf("Inserisci nome e cognome separati da spazio...\n");
scanf("%s %s", pers.nome, pers.cognome);
printf("Nome: %s\nCognome: %s\n", pers.nome, pers.cognome);
fprintf(file, "Nome: %s; Cognome: %s\n", pers.nome, pers.cognome);
printf("Continuare? s/n \n");
scanf("%s", risposta);
}while(strcmp(risposta,"n")!=0);
fclose(file);
printf("File chiuso....\n");
}else{
printf("Ci sono stati errori nella apertura del file %s, errno: %d\n", fileUtenti, strerror(errno));
}
(Questa è la parte che prima non funzionava e che con il vostro aiuto sono riuscito a far partire).
A cosa può essere dovuto il problema?
Un'altra domanda, dopo essere riuscito a leggere correttamente le informazioni dal file vorrei creare un vettore (di cui ovviamente non conosco a priori la dimensione) dove posso trovare un semplice esempio per capire come fare?
Grazie a tutti, ciao ciao.