Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150

    [C] Problema con liste e puntatori

    Salve vi espongo subito il mio problema in pratica devo gestire una coda mediante l'utilizzo di una lista linkata semplice in linguaggio c .Realizzo 2 funzioni per accodare e disaccodare un elemento e passo alle funzioni i puntatori alla testa e alla coda della struttura il problema è che all'uscita dalla funzione i puntatori passati come argomento vengono risettati a NULL qualcuno mi potrebbe aiutare ? vi posto il codice

    codice:
    #include <.....>
    
    typedef struct TipoNodo
                          {
                            int Valore;
                            struct TipoNodo *Next;    
                          } TIPONODO;
    
    void Inserisci ( TIPONODO* , TIPONODO* ,int )
    
    int main()
    {
      TIPONODO *Head ,
               *Tail ;
    
      Head = NULL;
      Tail = NULL;
    
      printf("%d %d",Head,Tail); 
    
      Inserisci(Head , Tail , 12);
     
    
      printf("\n\n%d %d",Head,Tail); 
      system("pause");
    }
    
    void Inserisci ( TIPONODO* Head , TIPONODO* Tail ,int Value)
    {
      TIPONODO *Tmp;
    
      Tmp  = (TIPONODO*) malloc (sizeof(TIPONODO));
      Tmp->Valore = Value;
      Tmp->Next = NULL;
    
      if ( Tail == NULL )
      {
        Tail = Tmp;
        Head = Tmp;
      }
      else
      {
        Tail->Next = Tmp;
        Tail =Tmp;
      }
    }
    All'uscita della funzione inserisci vengono perse le assegnazioni alle variabili Head e Tail passate come argomento alla funzione chi potrebbe aiutarmi THANKSSSSSS !!!!!
    Carlo Carbone

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per poter modificare un dato all'interno di una funzione, tu devi passarne il puntatore. Per poter modificare un puntatore passato, tu devi passare il puntatore al puntatore. Le modifiche da farsi sono

    codice:
    void Inserisci ( TIPONODO** , TIPONODO** ,int );
    
    Inserisci(&Head , &Tail , 12);
    e
    codice:
    void Inserisci ( TIPONODO** Head , TIPONODO** Tail ,int Value)
    {
      TIPONODO *Tmp;
    
      Tmp  = (TIPONODO*) malloc (sizeof(TIPONODO));
      Tmp->Valore = Value;
      Tmp->Next = NULL;
    
      if ( *Tail == NULL )
      {
        *Tail = Tmp;
        *Head = Tmp;
      }
      else
      {
        (*Tail)->Next = Tmp;
        *Tail =Tmp;
      }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    Grazie per l'aiuto funziona tutto mi chiedevo se potevi aiutarmi anche con i file in poche parole quando faccio la fopen nn trova il file e il puntatore al descritto del file rimane sempre impostato a NULL potresti aiutarmi !? ecco il codice


    int main()
    (
    FILE *FDesc;

    FDesc = fopen("numeri.txt","r");

    if ( FDesc == NULL)
    printf("File non trovato");
    else
    ecc ecc
    )

    il file è nella stessa cartella dell'eseguibile uso dev c++ e ottengo sempre un valore NULL come mai ??
    Carlo Carbone

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non trova il file ... sei sicuro che stia nella cartella in cui il programma si aspetta il file?

    Prova a specificare il path completo ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    ho provato addirittura a spostarlo in c: e a dargli il nuovo percorso ma niente nn funziona . . . .ecco il codice completo

    FILE *FDescA ,
    *FDescB ;

    FDescA = fopen ("c:\a.txt","r");
    FDescB = fopen ("c:\b.txt","r");

    if ( FDescA == NULL )
    printf ("Errore durante l' apertura dei files di input . . .\n\n");
    else
    {
    MainMenu ( &Head , &Tail , FDescA , FDescB );

    fclose (FDescA);
    fclose (FDescB);
    }

    nn funziona
    Carlo Carbone

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In C il simbolo \ in una costante ha un significato particolare. Per indicare tale carattere lo devi raddoppiare ... fai attenzione ...

    FDescA = fopen ("c:\\a.txt","r");

    e dato che e' in lettura, naturalmente, deve esistere ...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    niente nn va
    Carlo Carbone

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In che senso "non va"?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    che mi entra sempre nel ciclo del NULL non trova il file
    Carlo Carbone

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... ma il file esiste?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.