2012-01-23 62 views
1

我想在C中创建一个字典。基本上,用户自己创建字典,输入一个字,然后定义。我创建了一个显示字典的函数,显示每个条目及其定义。不过,我得到这个错误:“Dictionary”Undeclared

错误:“字典”未声明(在一次使用此功能)

下面是我写的代码:

#include <stdio.h> 

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

有人能解释什么我做错了?

+0

答案很多解释什么是错在你的程序代码段。如果您对正在处理的事情感兴趣,请阅读* formal *和* actual *参数之间的区别。 – dasblinkenlight

回答

4

dictionary是一个不同函数的局部变量。
您的参数被命名为array

1

您的变量dictionary超出范围。试试这个,

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

这将失败,因为'dictarr'的类型是错误的。 –

0

display,字典没有声明。那很简单。

0

在显示功能变化dictionaryarray

0

dictionarymain内的局部变量,它不能从你的函数直接访问;相反,您使用的参数为array,该参数绑定到调用该函数时指定的第一个参数。

但还有一个问题:您错误地声明了参数。多维数组都以一种特定的方式进行传递:

void display (char array[][2]) { 
    int i; 

    for (i=0; i<11; ++i) 
     printf("%s %s", array[i][0], array[i][1]); 
} 

即,所有尺寸(除可选第一)必须指定,否则编译器无法知道如何到达你所要求的要素。