“字典”未声明

时间:2012-01-23 01:00:10

标签: c

我正在尝试用C创建一个字典。基本上,用户自己创建字典,输入一个单词然后输入一个定义。我创建了一个显示字典的函数,显示每个条目及其定义。但是,我收到了这个错误:

错误:'词典'未声明(首次使用此功能)

这是我写的代码:

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

有人可以解释我做错了吗?

6 个答案:

答案 0 :(得分:4)

dictionary是一个不同功能的局部变量 您的参数名为array

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

display中,未声明字典。那很简单。

答案 3 :(得分:0)

在显示功能中将dictionary更改为array

答案 4 :(得分: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]);
}

即,必须指定所有维度(除了可选的第一个维度),否则编译器无法知道如何到达您要求的元素。

答案 5 :(得分:0)

dictionary内将array更改为display()后,您可能会遇到其他奇怪的行为......

char *dictionary[10][2];

for (i=0; i<11; ++i) {

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