Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    18

    [C] Ricerca di valori in dizionario

    Salve a ,tutti ragazzi ho questo esercizio:
    Creare i file dictionary.h e dictionary.c che consentano di utilizzare le seguenti strutture:

    struct pair {
    char key[256];
    char value[256];
    };
    struct dictionary {
    size_t size;
    struct pair *data;
    };
    e la funzione:

    extern char *find(const struct dictionary *dict, const char *key);

    La struttura pair permette di memorizzare una coppia chiave-valore dove entrambi gli elementi sono costituiti da stringhe di al massimo 256 caratteri (terminatore compreso). La struttura dictionary invece permette di memorizzare un vettore di pair.
    La funzione accetta in input un puntatore a una struct dictionary e una stringa C e deve cercare nel dizionario una pair avente come chiave una stringa uguale a quella passata nel parametro key e ritornare il puntatore all’elemento trovato.
    La funzione ritorna NULL se almeno uno dei due parametri è NULL o se non viene trovato nessun elemento che ha la chiave cercata. Tutte le chiavi del dizionario sono uniche.


    Ciò che mi manda in panne è la ricerca di questo valore
    avendo una struct dict come costante come faccio ad incrementare il puntatore *data in modo che punti alla struttura successiva in modo da controllare il valore?
    Devo dichiarare una struttura di tipo pair temporanea?
    io ho creato questo codice che non mi da il risultato corretto, sapreste delucidarmi?
    codice:
    leggi_linee.h
    #ifndef Header
    #define Header
    #include<stdlib.h>
    #include<stdio.h>
    extern char **leggi_linee(const char *filename);
    #endif // !Header
    
    
    leggi_linee.c
    #include"dictionary.h"
    extern char *find(const struct dictionary *dict, const char *key)
    {
        char *ret=malloc(256*sizeof(char);
        for (size_t i = 0; i < dict->size; i++) {
            if (strcmp(*key, dict->data->key[i]))
                ret = &(dict->data)->key[i];
    
            return ret;
        }
    }

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

    dict->data[i]->key
    Ultima modifica di oregon; 21-07-2018 a 18:47
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    18
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Stai sbagliando ... devi usare

    dict->data[i]->key
    Mi dice che l'espressione deve essere di tipo puntatore se uso il tuo metodo

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

    dict->data[i].key

    ma devi avere allocato correttamente l'elemento data della struttura.

    Mostra il codice con l'allocazione.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.