Newsgroup: it.comp.lang.c
Titolo: Visualizzare una struttura memorizzata in un file

Salve a tutti
Sono riuscito a scrivere questa parte di programma che memorizza in un 
file degli indirizzi ip, ma non riesco a visualizzare i dati memorizzati 
  nel file e non riesco a capire dove sbaglio.
Un grazie in anticipo.
#include<stdio.h>
#include<stdlib.h>
#define NICK_LEN 10     /* Memoria allocata dall'unita' nick_name */
#define MAX_ADDRESS 100 /* Numero massimo di indirizzi ip */
typedef struct{
         int xx,
             yy,
             zz,
             mm;
         char nick_name[NICK_LEN];
         }address_t;
/* Prototipo della funzione leggi_unita */
void leggi_ip(FILE *fileip, address_t *addressip, int dimensione);
/* Prototipo della funzione load_ip */
void load_ip(FILE *fileip, address_t *addressip);
/* Prototipo della funzione print_address */
void print_address(address_t *addressip, int dimensione);
int main(void){
     address_t address[MAX_ADDRESS];
     int num_address;               /* Numero degli indirizzi ip in uso */
     int risposta;
     FILE *fileip;
    /* Inizio menu */
     do{
         printf("*******!!MENU'!!*******\n\n");
         printf("(1)Inserisci gli indirizzi ip\n");
         printf("(2)Carica gli indirizzi ip dal file\n");
         printf("(3)\n");
         printf("(4)Visualizza gli indirizzi ip memorizzati\n");
         printf("(5)Esci\n");
     /* Insaerisci 1, 2 o 3 per effettuare una scelta */
         printf("Effettua la tua scelta: ");
         scanf("%d", &risposta);
         if(risposta == 1){
             printf("Inserisci quanti indirizzi ip vuoi inserire: ");
             scanf("%d", &num_address);
             leggi_ip(fileip, address, num_address);
         }
         if(risposta == 2){
             load_ip(fileip, address);
         }//Fine if
         if(risposta == 4){
             print_address(address, num_address);
             }
     }// Fine do
     while(risposta != 5);
     printf("\n");
     system("PAUSE");
     return 0;
}// Fine main
/* Definizione della funzione leggi_ip */
void leggi_ip(FILE *fileip, address_t *addressip, int dimensione){
      int i; /* contatore */
      /* Apre il file in scrittura */
      fileip = fopen("indirizzip.dat", "w");
      printf("Inserisci gli indirizzi ip\n");
      printf("\nEsempio\n 127.0.0.1\n 111.22.5.88\n");
      printf("\nInseriscili in questo modo: \n");
      printf("\nxx = 127\nyy = 0\nzz = 0\nmm = 0\n");
      for(i = 0; i < dimensione; i++){
          if(i == dimensione - 1){
              printf("\nInserisci tutti 0\n");
          }// Fine if
          printf("Inserisci l'indirizzo ip %d\n", i+1);
          printf("\nxx = ");
          scanf("%d", &addressip[i].xx);
          printf("\nyy = ");
          scanf("%d", &addressip[i].yy);
          printf("\nzz = ");
          scanf("%d", &addressip[i].zz);
          printf("\nmm = ");
          scanf("%d", &addressip[i].mm);
          printf("\nInserisci il Nome Utente Associato all'indirizzo: ");
          scanf("%s", addressip[i].nick_name);
          fprintf(fileip, "%d %d %d %d %s\n", addressip[i].xx,
                                              addressip[i].yy,
                                              addressip[i].zz,
                                              addressip[i].mm,
                                              addressip[i].nick_name);
      }// Fine for
      printf("\n");
}// Fine funzione leggi_ip
/* Definizione della funzione load_ip */
void load_ip(FILE *fileip, address_t *addressip){
     if(( fileip = fopen("indirizzip.dat", "r")) == NULL){
          printf("\nNon Posso aprire il file\n");
     }
     else{
        fscanf(fileip, "%d%d%d%d%s\n", &addressip->xx,
                                       &addressip->yy,
                                       &addressip->zz,
                                       &addressip->mm,
                                       addressip->nick_name);
        fclose(fileip);
        printf("\nIl file e' stato letto con successo\n");
     }//Fine else
    system("PAUSE");
}
/* Definizione della funzione print_address */
void print_address(address_t *addressip, int dimensione){
      int i;
      for(i = 0; i < dimensione; i++){
            printf("%d.%d.%d.%d,%s\n",  addressip[i].xx,
                                        addressip[i].yy,
                                        addressip[i].zz,
                                        addressip[i].mm,
                                        addressip[i].nick_name);
      }
      printf("\n");
}

 }
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com


