我是新来的c + +编程我不得不用以下参数调用一个函数。 int Start(int argc,char ** argv)。在Visual C++中将1D指针数组(char)转换为2D指针数组(char)。
当我尝试用下面的代码调用上述函数时,我得到运行时异常。有人能帮我解决上述问题吗?
char * filename=NULL;
char **Argument1=NULL;
int Argument=0;
int j = 0;
int k = 0;
int i=0;
int Arg()
{
filename = "Globuss -dc bird.jpg\0";
for(i=0;filename[i]!=NULL;i++)
{
if ((const char *)filename[i]!=" ")
{
Argument1[j][k++] = NULL; // Here I get An unhandled
// exception of type
//'System.NullReferenceException'
// occurred
j++;
k=0;
}
else
{
(const char)Argument1[j][k] = filename [j]; // Here I also i get exception
k++;
Argument++;
}
}
Argument ++;
return 0;
}
Start (Argument,Argument1);
这是假设你想要一个二维数组,但我不认为你需要它。如果您希望存储多个文件名,例如,您需要一个2D数组。 [0] [ “文件中的一个”] [1] [ “文件中的两个”] [2] [ “文件中的三个”] 但我想你想一维数组 [F] [I] [L] [E] [] [O] [N] [E] – Craig 2010-01-27 07:56:27
嗨克雷格, 感谢您的宝贵意见。我试过了你的建议,但遇到同样的例外。我的主要动机是称为开始(参数,**参数);机能的研究。 – 2010-01-27 08:14:41
你知道两维数组是如何工作的吗?我的意思不是听起来不尊重,而是你想从代码中看到的是[0] [f] [1] [i] [2] [l] [3] [e],作为二维数组,你正在分配两个很大的空间。如果你想要它,所以它是[0] [文件名1] [1] [文件名2],只需从循环中删除j + +,每次你想添加另一个文件名 – Craig 2010-01-28 00:40:22