sempre mantenendo la struttura del file che ti ho detto sopra:
in testa numero che rappresenta il numero di coppie parolachiave-risposta
quindi dal i in poi una riga per parola chiave e una per risposta

dovrebbe essere qualcosa del genere:
codice:
typedef struct{
	char* parola_chiave;
	char* risposta;
}casella_t;

int main(){
	FILE *myfile;
	int dim, i;
	casella_t **vettore_dati; 
	casella_t *temp;
	char* stringaTemp[1024+1];


	myfile = fopen ("dati.txt", "r");

	if(myfile == NULL){
		printf("errore in lettura o file non trovato\n");
		return EXIT_FAILURE;
	}

	fscanf(myfile, "%d", &dim); // dim è il numero in testa al file, rappresenta il numero di coppie di parole_chiave-risposte presenti nel file
	vettore_dati = (casella_t**) malloc (dim * sizeof(casella_t*)); //allochi la memoria per il vettore

	for(i = 0; i<0; i++){
		temp = (casella_t*) malloc (sizeof(casella_t)); //allochi la casella

		fgets(stringaTemp, 1024, myfile); //leggi e metti nella stringa temporanea la parola chiave
		temp->parola_chiave = (char*) malloc( strlen(stringaTemp) * sizeof(char)); //allochi lo spazio corretto per la stirnga
		strcpy(temp->parola_chiave, stringaTemp); //copi

		fgets(stringaTemp, 1024, myfile); //leggi la risposta
		temp->risposta = (char*) malloc( strlen(stringaTemp) * sizeof(char)); //allochi lo spazio corretto
		strcpy(temp->risposta, stringaTemp); //copi

		vettore_dati[i] = temp;
	}


//tutto il resto del programma...
	return EXIT_SUCCESS;
}