我正在尝试用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;
}
有人可以解释我做错了吗?
答案 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)
dictionary
是main
中的局部变量,无法直接从您的函数访问;相反,你有参数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) {