Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] - Errore acquisizione da File di testo

    Ho un problema, ma non riesco a capire dove sbaglio...

    Ho un file di testo formattato nel modo seguente:

    ID: 1
    COGNOME: Rossi
    NOME: Mario

    ID: 2
    COGNOME: Verdi
    NOME: Giovanni

    ...
    ...
    ...

    etc.

    ho buttato giù qualche linea di codice per acquisire le informazioni dal file nella mia struttura dati array...ma mi va in segmentation fault e non capisco perchè...

    HELPPP!

    Codice PHP:
    #include "Agenda.h"

    void ReadAGENDA **Agendaint *ID )
    {

      
    FILE *fpAGENDA;
      
      
    char FileName[16],
           
    strbuff[64];

      
    AGENDA *Temp;

      
    int ContID;
      
      
    Temp=*Agenda/* Copio l'Agenda attuale in un'Array Temp */
      
    ContID = *ID/* Copio il numero di Contatti Attuale in ContID */
      
      
    strcpy(FileName"Agenda.txt" );
      
      if( ( 
    fpAGENDA fopenFileName"r" ) ) == )
      {
        
    system("CLS");
        
    printf("\n\a ERRORE: Impossibile aprire il file %s\n\n"FileName );
        
    system("PAUSE");
        
    system("CLS");
      }
      else
      {
        
        
    /* Alloco lo spazio necessario in memoria per inserire un nuovo NOMINATIVO */
        
    Temp =(AGENDA*)realloc( *Agenda , (ContID+1) * sizeofAGENDA ) );
        
    /* Inizializzo i sotto-array NumTel, Indirizzo, Email, AltriRecapiti */
        
    InitStruct( &TempContID );

        do
        {
        
        
    Temp =(AGENDA*)realloc( &(*Temp) , (ContID+1) * sizeofAGENDA ) );
            
        
    fscanf(fpAGENDA"%s"strbuff);
        if( 
    strcmp(strbuff,"ID:")==0)
          
    fscanf(fpAGENDA"%d", &Temp[ContID].Identita.ID);
          
        
    fscanf(fpAGENDA"%s"strbuff);
        if( 
    strcmp(strbuff,"COGNOME:")==0)  
          
    fgets(Temp[ContID].Identita.Cognome32fpAGENDA);
          
        
    fscanf(fpAGENDA"%s"strbuff);
        if( 
    strcmp(strbuff,"NOME:")==0)  
          
    fgets(Temp[ContID].Identita.Nome32fpAGENDA);
        
        
    ContID++;
        
        }  
        while( !
    feoffpAGENDA ) );
        
      }

      *
    Agenda Temp;
      *
    ID ContID;

       
    free(Temp);

      


  2. #2
    Ulteriore esempio di file di testo da acquisire:


    ID: 1
    COGNOME: Rossi
    NOME: Mario

    DATA DI COMPLEANNO: 30 Marzo

    RECAPITI TELEFONICI:
    Numero Casa
    123456789

    INDIRIZZI:
    Casa
    Via Manzoni
    , 28
    Roma - 00010

    E-MAILs:

    mario.rossi@alice.it
    mario.rossi@gmail.com


    In grassetto sono i campi della mia struttura:

    Eccoli in ordine...
    codice:
    Agenda[ContID].Identita.ID
    Agenda[ContID].Identita.Cognome
    Agenda[ContID].Identita.Nome
    Array di Numeri di telefono
    codice:
    Agenda[ContID].Numtel[Ntel].Tel
    Agenda[ContID].Numtel[Ntel].Etichetta
    Array di Indirizzi
    codice:
    Agenda[ContID].Indirizzo[NInd].Via
    Agenda[ContID].Indirizzo[NInd].NumCivico
    Agenda[ContID].Indirizzo[NInd].Citta
    Agenda[ContID].Indirizzo[NInd].CAP
    Agenda[ContID].Indirizzo[NInd].Etichetta

  3. #3
    L'allocazione del puntatore Temp dev'essere effettuata prima dell'istruzione:
    codice:
    Temp=*Agenda;

  4. #4
    Originariamente inviato da devil89
    L'allocazione del puntatore Temp dev'essere effettuata prima dell'istruzione:
    codice:
    Temp=*Agenda;

    L'agenda in quel momento è NULL;

    Quindi l'istuzione è del tutto valida!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.