Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: linguaggio c stringhe

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8

    linguaggio c stringhe

    Sapreste dirmi cosa c'è di sbagliato in questo programma che ho fatto, ma non riesco a fare girare? Non ho mai usato le funzioni sulle stringhe e probabilmente è lì l'errore; il file di testo contiene parole di lunghezza non predefinita e separate da uno spazio.
    Grazie per l'eventuale aiuto.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct na{
            char*inf;
            struct na*sin;
            struct na*des;
            }ALBERO;
    
    ALBERO*creaAlbero()
    {
      return NULL;
    }
            
    ALBERO*insertAlbero(ALBERO*a,char*v)
    {
      ALBERO*t; 
      if(a==NULL){
               t=(ALBERO*)malloc(sizeof(ALBERO));
               if(t==NULL)
                return NULL;
               else{
                    strcpy(t->inf,v);
                    t->sin=NULL;
                    t->des=NULL;
                    return t;
                    }
                  }  
      else{
           if((strcmp(a->inf,v))>=0)
            a->sin=insertAlbero(a->sin,v);
           else
            a->des=insertAlbero(a->des,v);
           return a;
           }
    }
            
    void stampaAlbero(ALBERO*a)
    {
      if(a!=NULL){
                  stampaAlbero(a->sin);
                  printf("%s\n",a->inf);
                  stampaAlbero(a->sin);
                  }
    }
    
    int main()
    {
      ALBERO*al;
      char*x;
      FILE*f;
      al=creaAlbero();
      f=fopen("dati.txt","r");
      if(f==NULL){
                  printf("errore in memoria");
                  exit(-1);
                  }
      else{
           while((fscanf(f,"%s",x))!=EOF)
             al=insertAlbero(al,x);
             }
      fclose(f);
      stampaAlbero(al);
      system("PAUSE");	
      return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: linguaggio c stringhe

    Originariamente inviato da zelva
    .. non riesco a fare girare? ...
    Che vuol dire precisamente? Non lo riesci a compilare? Hai degli errori? Quali? A runtime?

    Se non dai dettagli nessuno provera' tutto il codice per darti una risposta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Lo compilo e tutto ok, ma mi crasha quando lo eseguo.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da zelva
    mi crasha quando lo eseguo.
    Non puoi essere piu' preciso?

    Crasha in che senso? Hai un segmentation fault (access violation)? Subito all'avvio o dopo aver fatto qualche operazione? Quale?

    P.S. Fra l'altro il programma legge un file di testo di cui non si conosce il contenuto.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Perdona la mia scarsa conoscenza dei termini tecnici, ma non sono un programmatore c, sto facendo questo programma per prepararmi ad un esame che non c'entra moltissimo col mio background.
    Uso dev c++ e faccio "compila" e porta a fine l'operazione, ma quando faccio "esegui" non mi mostra il risultato nella finestra, ma fa vedere lo schermo nero riportando il messaggio indicante il fatto che che il programma ha smesso di funzionare.

    PS il contenuto del file di testo sono parole a caso che puoi inventarti separate da uno spazio come "cane gatto coniglio topo"

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Quelle da rivedere mi sa che sono le funzioni di manipolazione di stringhe (quelle per cui ho incluso string.h) strcpy e strcmp, che è la prima volta che ho utilizzato.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ok ... allora i problemi sono in

    char*x;

    e

    char*inf;


    in cui hai dei puntatori a delle stringhe di caratteri ma le stringhe NON sono mai allocate.

    Non basta un puntatore ... ci vuole della memoria dietro a cui puntare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    devo fare tipo
    char vett[10];
    char*x;
    x=vett;
    ?
    Ho provato e non va...
    Oppure allocare dinamicamente con malloc?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    O allochi dinamicamente oppure

    char x[20];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Domanda che troverai stupida caro Oregon, ma ti ho detto che sono un po' carente in questo campo: se utilizzo char[20] vuol dire che in ogni cella dell'array ho una parola o solo un carattere? Dalle verifiche che sto facendo a me sembra solo un carattere, ma allora come faccio a passare alla funzione di inserimento dell'albero una parola alla volta? Non il singolo carattere.

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.