codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define SIZE 20
typedef struct nodo{
char cognome[20];
char nome[20];
char telefono[20];
struct nodo *succ;
}agenda;
int main()
{
agenda *k, *pun;
FILE *rubrica;
int count = 0,i = 0;
if ((rubrica = fopen("agenda.txt", "r")) == NULL)
{
printf("Il File che stai cercando di aprire non esiste\n");
}
else
{
k = (agenda *)malloc(sizeof(agenda));
if(k==NULL)
{
printf("Memoria esaurita\n");
}
else
{
fscanf(rubrica,"%s",k->cognome);
fscanf(rubrica,"%s",k->nome);
fscanf(rubrica,"%s",k->telefono);
pun = k;
count++;
while(!feof(rubrica))
{
pun->succ = (agenda *)malloc(sizeof(agenda));
pun = pun->succ ;
fscanf(rubrica,"%s",pun->cognome);
fscanf(rubrica,"%s",pun->nome);
fscanf(rubrica,"%s",pun->telefono);
count++;
}
pun->succ = NULL;
printf("Numero di record trovati: %d\n",count);
pun = k;
do
{
printf("\nNome: %s\t Cognome: %s\t Telefono: %s\t\n",pun->nome,pun->cognome,pun->telefono);
pun=pun->succ;
}while(pun != NULL);
pun = k;
char** strs = (char**)malloc(sizeof(char*) * count);
for(i = 0; i < count; i++)
{
strs[i] = (char*)malloc(sizeof(char) * SIZE);
char* value = pun->cognome;
strcpy(strs[i], value);
pun = pun->succ;
}
int j=0;
char* minore;
char* maggiore;
char* scambio;
int scmabia = 0;
for(i = 0;i < (count-2); i++)
{
int scambia = 0;
for(j=i+1;j<(count-1);j++)
{
if(strs[j] < strs[i])
minore = strs[j];
scambia = 1;
}
if (scambia == 1)
{
maggiore = strs[i];
strs[i] = minore;
strs[j] = maggiore;
strcpy(strs[i],minore);
strcpy(strs[j],maggiore);
}
}
for(i = 0; i < count; i++)
printf(">> %s <<\n", strs[i]);
for(i = 0; i < count; i++)
free(strs[i]);
free(strs);
}
}
fclose(rubrica);
printf("\n");
system("PAUSE");
return 0;
}