これまでのところ、これが得られましたが、それが正しいかどうかはわかりません。 この関数は、2D配列(nxn)の寸法を受け取り、それを割り当てます。 flightInfoは、構造体の名前です。 これは機能しますか? ありがとうアドバンス2次元配列のポインタを構造体に割り当てる方法
配列を割り当てた後(私はあなたが提案したメソッドを使用することはできませんので、メソッドを無視してください)私は構造体を初期化したいと思います。 )、割り当ての直後にそれをやろうとしましたが、 "未処理の例外"という警告が表示され続けていますが、それは の構文で行う必要がありますか? '*'を忘れていますか?
void flightMatrix()
{
FILE * fpf;
int checkScan,Origin,Dest;
float time,cost;
char flightName[3];
flightInfo *** matrix;
if(!(fpf=fopen("flights.txt","r")))exit(1);
while((checkScan=fscanf(fpf,"%*10c%3d%3d%3c%5f%7f%*",&Origin,&Dest,flightName,&time,&cost))!=EOF)
{
matrix=allocateMatrix(Dest);
matrix[Origin-1][Dest-1]->o=Origin;
}
}
flightInfo*** allocateMatrix(int n)
{ int i,j;
flightInfo*** matrix;
matrix=(flightInfo***)malloc(sizeof(flightInfo **)*n);
for(i=0;i<n;i++)
matrix[i]=(flightInfo **)malloc(sizeof(flightInfo*)*n);
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
matrix[i][j] = NULL;
}
return matrix;
}
[http://i.stack.imgur.com/MFC7V.png] これは私が話す
あなたが3つ星のプログラマになると、それは良いことではありません...また、malloc()をキャストしない –
_これは動作しますか?_試しましたか? – LPs
これは2D配列ではありません。 2次元配列であるためには、1つのn x nブロックを割り当ててください。 – fvgs