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

Rispondi quotando