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); 

}
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?
In genere per queste cose si utilizzano i DATABASE (e non i files di testo)
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).