“Diccionario” no declarado

Estoy tratando de crear un diccionario en C. Básicamente, el usuario crea el diccionario por sí mismo, ingresando una palabra y luego una definición. He creado una función donde se muestra el diccionario, que muestra cada entrada y su definición. Sin embargo, estoy recibiendo este error:

error: ‘diccionario’ no declarado (primer uso en esta función)

Aquí está el código que he escrito:

#include  void display (char *array) { int i; for (i=0; i<11; ++i) printf("%s %s", dictionary[i][0], dictionary[i][1]); } int main(void) { char *dictionary[10][2]; int command; int i; while (command != 3) { printf ("1. Define or 2. Lookup or 3. Exit"); scanf ("%d", &command); if (command == 1) { for (i=0; i<11; ++i) { printf("Please enter a word to define:"); scanf("%s\n", dictionary[i][0]); printf("Please enter its definition:"); scanf("%s", dictionary[i][1]); break; } } if (command == 2) display(dictionary); } return 0; } 

¿Puede alguien explicar lo que estoy haciendo mal?

dictionary es una variable local en una función diferente.
Su parámetro se llama array .

Su dictionary variables está fuera de scope. Prueba esto,

 if (command == 2) { for (i=0; i<11; ++i) printf("%s %s", dictionary[i][0], dictionary[i][1]); } 

En la display , el diccionario no está declarado. Que simple

En la función de visualización cambiar el dictionary a la array

dictionary es una variable local dentro de la main , a la que no se puede acceder directamente desde su función; en cambio, tiene su array parámetros para ese uso, que está vinculada al primer argumento especificado cuando se llama a la función.

Pero hay otro problema: declaraste el parámetro incorrectamente. Las matrices multidimensionales se deben pasar de una manera particular:

 void display (char array[][2]) { int i; for (i=0; i<11; ++i) printf("%s %s", array[i][0], array[i][1]); } 

Es decir, se deben especificar todas las dimensiones (excepto opcionalmente la primera), de lo contrario el comstackdor no puede saber cómo alcanzar los elementos que solicita.

Después de que hayas cambiado el dictionary a la array dentro de la display() , puedes obtener otro comportamiento extraño …

 char *dictionary[10][2]; for (i=0; i<11; ++i) { 

http://en.wikipedia.org/wiki/Off-by-one_error