14/10/10 12:44
torn24
ho cercato nel forum altre domande sulla funzione gets e visto che non le ho trovate ho postato la mia
ho creato un piccolo programma come esercizio per scrivere strutture su un file
la struttura comprende un nome e un indirizzo per il nome uso la scanf mentre
per l'indirizzo essendo formato da una stringa con spazi ho usato la gets
il programma si comportava in modo apparentemente incomprensibile saltando
la gets ho risolto provando a mettere un getchar() dopo la scanf e funziona ma
NON HO LA MINIMA IDEA del perchè si verifichi questo comportamento e perchè
si risolva cono un getchar() che tra l'altro non è immediatamente precedente al gets ho provato ad usare due scanf in sucesione è il problema non si è verificato
ho compilato con due compilatori differenti e il problema persiste
premetto che non ci avevo mai fatto caso
posto il codice
ho creato un piccolo programma come esercizio per scrivere strutture su un file
la struttura comprende un nome e un indirizzo per il nome uso la scanf mentre
per l'indirizzo essendo formato da una stringa con spazi ho usato la gets
il programma si comportava in modo apparentemente incomprensibile saltando
la gets ho risolto provando a mettere un getchar() dopo la scanf e funziona ma
NON HO LA MINIMA IDEA del perchè si verifichi questo comportamento e perchè
si risolva cono un getchar() che tra l'altro non è immediatamente precedente al gets ho provato ad usare due scanf in sucesione è il problema non si è verificato
ho compilato con due compilatori differenti e il problema persiste
premetto che non ci avevo mai fatto caso
posto il codice
void scrivi(void) { s a; FILE *w; w=fopen("x.txt","ab"); if (w==NULL) printf("inpossibile scrivere sul file n"); printf("SCRIVI :\n-------------------------\n"); printf("inserisci il nome : "); scanf("%s",a.nome); getchar(); //senza il getchar() sembra che salti la gets() printf("inserisci l' indirizzo : "); gets(a.indirizzo); fwrite(&a,sizeof(a),1,w); fclose(w); printf("scrittura su file avvenuta con successo\n"); }
aaa