Salve a tutti sto creando un progetto universitario che consta in una rubrica telefonica.
Praticamente ho qua due funzioni, una che aggiunge le voci in rubrica (cognome, nome e telefono) ed un'altra che cerca un cognome e nome preciso per poi visualizzare l'intera voce.
Sono fermo nella creazione della funzione che ricerca i nomi nella rubrica ma il problema è il seguente:
Per il momento faccio scrivere sullo stdout la voce della prima persona soltanto che mi da in output lo spazio tra il cognome e il nome e poi mi da il nome e il numero. In poche parole mi salta la fscanf del cognome ossia la prima parola della riga. Vi posto i pezzetti di codice che interessano:
//Aggiungere record in rubrica
int addContact(){
FILE*f;
char cognome[15], nome[15], telefono[15];
f=fopen("rubrica.txt","a");
printf("COGNOME: ");
scanf("%s",cognome);
printf("NOME: ");
scanf("%s",nome);
printf("TELEFONO: ");
scanf("%s",telefono);
fprintf(f,"%s %s %s\n",cognome,nome,telefono);
fclose(f);
return 0;
}
//Trovare contatto/i
int searchContact(){
FILE*f;
nomeT[15], cognomeT[30], telefonoT[10];
f=fopen("rubrica.txt","r");
fscanf(f,"%s",cognomeT);
fscanf(f,"%s",nomeT);
fscanf(f,"%s",telefonoT);
printf("%s %s %s",cognomeT,nomeT,telefonoT);
fclose(f);
return 0;
}
Ho fatto due prove:
1) Inserisco una nuova voce tramite il comando addContact() e poi effettuo la ricerca con searchContact() e mi da l'errore in questione;
2)Inserisco a mano nel file rubrica.txt la voce della persona ed effettuo la ricerca con searchContact() ed ecco che magicamente mi appaiono tutte e tre le voci (cognome, nome e telefono). Cioè la fscanf comincia a leggere dalla prima parola della riga.
Da questo presumo che quindi è una problema della funzione addContact().
Secondo voi quale potrebbe essere il problema???
Scusate il testo lungo ma mi volevo spiegare bene!
Grazie mille