Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    64

    [C] problema sovrascrittura dati in array di struct

    salve a tutti!
    ho un problema con il progetto che devo consegnare per un esame dell'universita',
    si tratta di un programmino che comprime un testo in RLE e memorizza la frequenza cn cui le parole si ripetono nel testo

    sarei grato se qualcuno riuscisse a spiegarmi questa cosa perchè sto debuggando da giorni e nn riesco a cavare un ragno da un buco..

    nel progetto ho un array di strutture di tipo

    codice:
    typedef struct
    {
        int frequenza;
        char *stringa;
    }PAROLA;
    
    PAROLA *vettore_parole = NULL;
    e un ciclo in cui le strutture di questo vettore vengono riempite una per una cn una stringa che è la parola e un intero che è la frequenza cn cui appare nel file di testo preso in input questa parola. Cosi:

    codice:
    vettore_parole[l].stringa = (char*)calloc(j + 1, sizeof(char));
    									
    for(m = 0; m < j; m++)							vettore_parole[l].stringa[m] = tmp[m];
    								
    vettore_parole[l].stringa[j] = '\0';//null termino la stringa
    									
    vettore_parole[l].frequenza = 1;//la parola è presente 1 volta nel testo
    									
    parole_inserite++;
    il mio problema è che debuggando ho notato che certe volte (piu che altro cn file input grandi) il campo frequenza viene sovrascritto al campo stringa di altre parole dell'array vettore_parole, proprio sullo stesso indirizzo, verificato col debugger.. cm è possibile?
    sapreste dirmi qualcosa?
    grazie mille

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' difficile da dirsi se non si effettua il debugging ...

    P.S. Non hai mostrato l'allocazione del vettore di struct e non si capisce perche' usi la for per la copia della stringa al posto della funzione strcpy ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    64
    vuoi che metta tutto il codice del programma? è un po lungo ma se puo aiutare lo faccio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... piuttosto, se vuoi, dovresti postare un link da cui scaricare il progetto da provare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un problema e' certamente in queste linee

    codice:
    	file_input = (char*)malloc(size * sizeof(char));
    	fread(file_input, sizeof(char), size, fp);
    	file_input[size] = '\0';//null-termino la stringa
    dove allochi lo spazio in un buffer per leggere tutto il contenuto di un file, ma poi scrivi il terminatore null fuori dal buffer (in quanto non era previsto dalla malloc), sporcando chissa' cosa in memoria ...

    E in realta', il terminatore non serve a nulla, dato che il buffer non e' una stringa ...

    La

    codice:
    	file_input[size] = '\0';//null-termino la stringa
    va quindi eliminata.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    64
    mm ok.. cmq ricompilando e rieseguendo mi da lo stesso errore di segmentation fault.. cioe praticamente alla fine della funzione compressione_rle wquando faccio la free di vettore_parole mi da quell'errore.. per cui secondo me c'e qualcosa d sbagliato nel modo in cui inserisco i dati in quel vettore.. oppure forse nel modo in cui alloco quell'area di memoria.

    Pero veramente non so piu da che parte farmi....

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da quagmire
    mm ok.. cmq ricompilando e rieseguendo mi da lo stesso errore di segmentation fault.. cioe praticamente alla fine della funzione compressione_rle wquando faccio la free di vettore_parole mi da quell'errore.. per cui secondo me c'e qualcosa d sbagliato nel modo in cui inserisco i dati in quel vettore.. oppure forse nel modo in cui alloco quell'area di memoria.

    Pero veramente non so piu da che parte farmi....
    Hai eliminato quell'errore?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    64
    sisi.. dicevo dopo averlo eliminato ricompilando e rieseguendo mi da lo stesso errore

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A me no.

    Con quale file hai provato?

    Me lo fai scaricare ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.