Qualcuno sa dirmi perchè non riesco a fare questo assegnamento???
Segno le parti in ROSSO nel CODICE...
Grazie a tutti per la collaborazione.....
Fede
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** cognomi = (char**)malloc(sizeof(char*) * count);
char** nomi = (char**)malloc(sizeof(char*) * count);
char** telefo = (char**)malloc(sizeof(char*) * count);
for(i = 0; i<count; i++)
{
cognomi[i] = (char*)malloc(sizeof(char) * SIZE);
char* value1 = pun->cognome;
strcpy(cognomi[i], value1);
nomi[i] = (char*)malloc(sizeof(char) * SIZE);
char* value2 = pun->nome;
strcpy(nomi[i], value2);
telefo[i] = (char*)malloc(sizeof(char) * SIZE);
char* value3 = pun->telefono;
strcpy(telefo[i], value3);
pun = pun->succ;
}
int scambio = 0;
int j;
char minore_cognome[20];
char minore_nome[20];
char minore_telefono[20];
for(i=0;i<=(count-1);i++)
{
for(j=i+1;j<=(count);j++)
{
if(cognomi[j] < cognomi [i])
{
minore_cognome = cognomi[j];
minore_nome == nomi[j];
minore_telefono == telefo[j];
cognomi[j] == cognomi[i];
nomi[j] == nomi[i];
telefo[j] == telefo[i];
cognomi[i] == minore_cognome;
nomi[i] == minore_nome;
telefo[i] == minore_telefono; }
}
}
printf("\n");
for(i = 0; i < count; i++)
{
printf(">> %s <<\n", cognomi[i]);
printf(">> %s <<\n", nomi[i]);
}
for(i = 0; i < count; i++)
free(cognomi[i]);
free(cognomi);
}
}
fclose(rubrica);
printf("\n");
system("PAUSE");
return 0;
}