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