Salve a tutti,
sto realizzando un anagrafe in C , ho fatto tutte le funzioni di modifica, ricerca, inserimenti etc..
il programma è stutturato in modo che su una struttura sono indicati i dati personali di ogni persona, questi dati vengono salvati su un file txt ..
Dopo aver inserito i dati vorrei ordinare il file per cognome quindi avere il file txt sempre ordinato ma trovo dei problemi ... potete darmi una mano ?
ora inserisco la funzione d'inserimento senza l'ordinamento ... vi ringrazio gia da adesso ..
//inserisce un nuovo contatto nella anagrafe
void inserisci (link *anagrafe)
{
link ultimo, temp, nuovo;
system ("cls");
nuovo = (link) malloc (sizeof(persona));
if (!nuovo)
{
printf ("\n\tMemoria esaurita, impossibile inserire. -invio-\n\n\t");
return;
}
printf ("\n\tInserire il nome:\t");
scanf ("%s", nuovo->nome);
printf ("\n\tInserire il cognome:\t");
scanf ("%s", nuovo->cognome);
printf ("\tInserire il numero telefonico:\t");
scanf ("%s", nuovo->tel);
printf ("\n\tInserire la Data di nascita:\t");
scanf ("%s", nuovo->data);
printf ("\n\tInserire lo stato civile :\t");
scanf ("%s", nuovo->stato_civile);
printf ("\tInserire il domicilio:\t");
scanf ("%s", nuovo->domicilio);
printf ("\tInserire la professione:\t");
scanf ("%s", nuovo->professione);
nuovo->sx = nuovo->dx = NULL;
temp = *anagrafe;
if (temp)
{
ultimo = NULL;
while ((temp && strcmp(temp->cognome,nuovo->cognome)<0) && (temp && strcmp(temp->nome,nuovo->nome)<0))// Ordina per cognome
{
ultimo = temp;
temp = temp->dx;
}
if (ultimo)
{
nuovo->sx = ultimo;
nuovo->dx = ultimo->dx;
if (ultimo->dx)
ultimo->dx->sx = nuovo;
ultimo->dx = nuovo;
}
else
{
nuovo->dx = *anagrafe;
(*anagrafe)->sx = nuovo;
*anagrafe = nuovo;
}
}
else
*anagrafe = nuovo;
}