fix87
20-05-2012, 17:25
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
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