Visualizzazione dei risultati da 1 a 3 su 3

Discussione: struct su file in c

  1. #1

    [linguaggio C]struct su file

    salve ragazzi è la prima volta ke scrivo ma vi seguo tanto anche perchè molto spesso trovo le soluzioni ai miei problemi guardando quelle degli altri

    questa volta però nn sono riuscito a trovare la soluzione al mio problema e speravo ke qualcuno di voi mi potesse aiutare.La mia situazione è questa, devo creare un dizionario di sinonimi (massimo 5 per ogni parola) ke è indicizzato per lettere dell'alfabeto. ora io ho provato a creare una "struttura" con campi: indice, parola[5][20], sinonimo[4][20] ma nn riesco nella fase di lettura a leggermi questi dati da un file!
    vi posto il codice..
    Codice PHP:
    ...
    //CODICE SCRITTURA FILE
    typedef struct Dizionario
                
    {
                    
    char indice;
                    
    struct {
                    
    char parola[20];
                    
    struct {
                    
    char sinonimi[20];
                    }
    s[5];
                    }
    p[4];
                }
    d;
     
    int i=0,f=0,c=0;
    void main()
    {

        
    FILE *ofp;
                              
    d dizionario[23];
             
    ofpfopen("dizionario.dat""wb");
    dizionario[1].indice=97 //valore ascii
                
    ;
            
    i=0;
        
         while(
    i!=2)
        {
        
    i++;
        
    dizionario[i].indice=dizionario[i].indice+1;
        
    fwrite(&dizionario,sizeof(dizionario),1,ofp);    
             
    c=0;


         while (!
    feof(stdin) && (c!=4))
         {
             
    fflush(stdin);
             
    c++;
    printf("i=%d,c=%d",i,c);
         
    printf("\ninserisci la %d parola dell'indice %c: ",c,dizionario[i].indice);
         
    scanf("%s", &dizionario[i].p[c].parola);     
        
    fwrite(&dizionario[i].p,sizeof(dizionario[i].p),1,ofp);
        
         
    f=0;
        while(
    f!=5)
         {
             
    f++;
         
    printf("\n inserisci il %d sinonimo della parola %s: ",f,dizionario[i].p[c].parola);
         
    scanf("%s", &dizionario[i].p[c].s[f].sinonimi);
         
    fwrite(&dizionario[i].p[c].s,sizeof(dizionario[i].p[c].s),1,ofp);
         }

         }
         }
            
    fclose(ofp);
    fflush(stdin);

    Codice PHP:
    //CODICE LETTURA

    void main()
    {
         

        
    FILE *fl;

         
    d dizionario[2];
         
    d dizionario1[2];
      
    fflush(stdin);

        
    flfopen("dizionario.dat""rb");
        
        if (
    fl){
     
    i=0;
    for (
    i=0i<=2i++)
    {
        
    fscanf(fl,"%c",dizionario[i].indice);
        
    dizionario1[i].indice=dizionario[i].indice;
        
    c=0;
        for (
    c=1c<=4c++)
        {
            
    fscanf(fl,"%s",dizionario[i].p[c].parola);
                
    strcpy(dizionario1[i].p[c].parola,dizionario[i].p[c].parola);
                
    f=0;
        for (
    f=1f<=5f++)
        {
            
    fscanf(fl,"%s",dizionario[i].p[c].s[f].sinonimi);
            
    strcpy(dizionario1[i].p[c].s[f].sinonimidizionario[i].p[c].s[f].sinonimi);
        }
        }
    }
      
    fclose(fl); 
    i=0;
    c=0;
    f=0;
      for (
    i=0i<=2i++)
    {
        
    printf("indice=%c\n",dizionario1[i].indice);
        
    c=0;
        for (
    c=1c<=4c++)
        {
            
    printf("%d parola=%s\n",c,dizionario1[i].p[c].parola);
                
    f=0;
        for (
    f=1f<=5f++)
        {
            
    printf("%d sinonimo=%s",f,dizionario1[i].p[c].s[f].sinonimi);
        }
        }
    }

        }

    il programma nn mi segnale errori ma poi quando mando in esecuzione la lettura mi dice "la memoria nn poteva essere read ....."
    vi prego ragazzi mi potete aiutare devo completare questo progetto per l'università :S
    grazie in anticipo

  2. #2
    chiedo scusa, volevo aggiungere ke ho sostituito i "fscanf" con


    codice:
     fread(&dizionario[i].p,sizeof(dizionario[i].p),1,fl);
    
    	
    fread(&dizionario[i].p[c],sizeof(dizionario[i].p[c]),1,fl);;
    	
    fread(&dizionario[i].p[c].s[f],sizeof(dizionario[i].p[c].s[f]),1,fl);

  3. #3
    ragà sono arrivato a stampare il contenuto del file ma invece di stamparmi quello ke gli ho scritto mi stampa tutti caratteri strani.
    Ragà per favore qualche anima gentile mi può aiutare?? entro fine sett devo consegnare il progetto ma se nn riesco a scrivere/leggere i caratteri scritti nn riesco ad andare avanti

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