将数据扫描成2d阵列

时间:2015-04-03 10:03:34

标签: c arrays char malloc scanf

我试图在论坛中查找但无法解决此问题。 试图从用户那里得到一个字符串到2d数组(char ***)

这里是我的代码

int i=0;
int j=0;

if(!(main=(char***)malloc(numWords*sizeof(char**))))
    exit(1);

if(!(main[i]=(char**)malloc((numDef+1)*sizeof(char*))))
    exit(1);

if(!(main[i][j]=(char*)malloc((80)*sizeof(char))))
    exit(1);

for (j=1; j<numDef; j++)
    {
        if(!(main[i][j]=(char*)malloc((200)*sizeof(char))))
            exit(1);
    }
printf ("please Enter word: \n");
scanf("%s",main[i][j]); // Here is the problem
printf("Word typed:%s\n", main[i][j]);

我无法打印插入的单词,以确保它真的被扫描到数组中。

问题是什么?

1 个答案:

答案 0 :(得分:0)

如果您在此处使用后未重置j值:

for (j=1; j<numDef; j++)

当你在main变量之后使用它时,它会在一个条目中过多地解决这个问题:

scanf("%s",main[i][j]); // Here is the problem

因为j现在是== numDef,这太过分了。

(注意:不要像C程序的main()函数那样命名变量)