我尝试在论坛中查找,但无法解决此问题。在试图从用户那里获得一个字符串到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:%sn", main[i][j]);
我无法打印插入的单词以确保它真的被扫描到数组中。
问题出在哪里?
如果在此处使用j
值后没有重置:
for (j=1; j<numDef; j++)
当你在循环之后使用它时,它会在main
变量中处理一个太远的条目,如下所示:
scanf("%s",main[i][j]); // Here is the problem
因为CCD_ 3现在是CCD_。
(注意:不要像C程序的main()
函数那样命名变量)