BASTA TOGLIERE I NEWLINE
codice:#include <stdio.h> struct struttura { char nome[20]; char cognome[20]; char indirizzo[50]; int codice_pers; } persona; void main () { FILE *fp; char ancora; int i; //Se il file rubrica.txt non esiste lo crea. if (!(fp = fopen("rubrica.txt", "a+"))) printf("Il file rubrica.dat non esisteva ed e\' stato appena creato\n"); //Si ripete l'inserimento fino a quando si sceglie di inserire nominativi do { printf("Inserire il nome: "); fgets(persona.nome, 20, stdin); printf("Inserire il cognome: "); fgets(persona.cognome, 20, stdin); printf("Inserire l'indirizzo: "); fgets(persona.indirizzo, 50, stdin); printf("Inserire il codice persona: "); scanf("%d", &persona.codice_pers); for(i=0; i<20; i++){ if(persona.nome[i]=='\n') persona.nome[i]=' '; } for(i=0; i<20; i++){ if(persona.cognome[i]=='\n') persona.cognome[i]=' '; } for(i=0; i<50; i++){ if(persona.indirizzo[i]=='\n') persona.indirizzo[i]=' '; } fprintf(fp, "%s", persona.nome ); fprintf(fp, "%s", persona.cognome); fprintf(fp, "%s", persona.indirizzo); fprintf(fp, "%d\n", persona.codice_pers); printf("\nSi desidera aggiungere un altro nominativo?\n"); ancora = '0'; // Verifico che non vengano immessi altri carateri al di fuori di s,S,n,N while (ancora != 's' && ancora !='S' && ancora !='n' && ancora !='N') { printf ("Rispondere [S/N]: "); scanf("%c",&ancora); } while((getchar()) != '\n'); } while (ancora != 'n' && ancora != 'N'); //chiudo il file fclose(fp); }In genere per queste cose si utilizzano i DATABASE (e non i files di testo)un ultima cosa, siccome devo fare un ordinamento in base al codice persona all'interno del file, e inoltre dovrò modificare una persona o cancellarla del tutto, mi conviene di più che i dati siano disposti per riga o come nel formato di adesso uno sotto l'altro?
http://forum.html.it/forum/showthrea...62#post2943162
CMQ, a scopo puramente didattico... credo che la "cosa"
in generale la gestisci meglio inserendo i campi (nome, cognome, ecc...) come nel primo esempio (uno per riga)
anche se forse per cancellare un intero RECORD è meglio
inserire in ogni riga un singolo record (come nel secondo esempio).

Rispondi quotando