我试图在论坛中查找但无法解决此问题。 试图从用户那里得到一个字符串到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]);
我无法打印插入的单词,以确保它真的被扫描到数组中。
问题是什么?
答案 0 :(得分:0)
如果您在此处使用后未重置j
值:
for (j=1; j<numDef; j++)
当你在main
变量之后使用它时,它会在一个条目中过多地解决这个问题:
scanf("%s",main[i][j]); // Here is the problem
因为j
现在是== numDef
,这太过分了。
(注意:不要像C程序的main()
函数那样命名变量)