저는 C++ 프로그래밍을 처음 사용합니다. 다음 인수를 사용하여 함수를 호출해야합니다. int Start (int argc, char ** argv).Visual C++에서 1D 포인터 배열 (char)을 2D 포인터 배열 (char)로 변환합니다.
아래 코드로 위의 함수를 호출하려고하면 런타임 예외가 발생합니다. 위의 문제를 해결하는 데 도움을 줄 수 있습니까?
char **Argument1=NULL;
이 포인터 포인터, 당신이 필요로하는 것입니다 :
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 배열이 필요하다고 가정하고 있지만 필요하지는 않습니다. 같은 여러 파일 이름을 저장하려는 경우 2D 배열이 필요합니다. [0] [ "두 파일"] [1] [ "하나의 파일"] [2] [ "세 개의 파일"] 을하지만 난 당신이 1 차원 배열을 할 생각 [F] [I] [L] [E] [] [O] [N] [E] – Craig
안녕하세요 크레이그, 당신의 소중한 제안에 감사드립니다. 귀하의 제안을 시도했지만 동일한 예외가 발생했습니다. 내 주요 동기는 시작 (인수, ** 인수); fuction. –
2 차원 배열이 어떻게 작동하는지 알고 있습니까? 저는 무례한 말을하는 것이 아닙니다. 그러나 여러분이 코드에서 원하는 것은 2 차원 배열로서 여러분이 코드에서 원하는 것으로 보이는 것은 [0] [f] [1] [1] [2] [3] [e]입니다. 두 개의 방을 많이 할당하고 있습니다. 원하는 경우 [0] [filename1] [1] [filename2], 루프에서 j ++을 제거하고 다른 파일 이름을 추가 할 때마다 증가시킵니다. – Craig