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;
    }
}