私は printf 関数を連続して呼び出し、最初の printf は書き込む必要があるものを書き込み、2 番目の printf は無効な値を書き込むだけで、いくつかのエラーを推測します。
「LOC」の型は私が定義し、変数「i」は呼び出し後に変更されません。printf と指定した値との不一致を二重にチェックしました。
i=2;
printf("x = %f,y = %f,z = %f\n",(*LOC)[0].ProjectionPoints[i].X,(*LOC)[0].ProjectionPoints[i].Y,(*LOC)[0].ProjectionPoints[i].Z); /* Prints perfectly */
printf("x = %f,y = %f,z = %f\n",(*LOC)[0].ProjectionPoints[i].X,(*LOC)[0].ProjectionPoints[i].Y,(*LOC)[0].ProjectionPoints[i].Z); /* Shows some errors and values are "0" */
最初の printf 書き込み
x = -10.000000,y = -8.000000,z = -10.000000
2 番目の printf 書き込み
x = 0.000000,y = 0.000000,z = -1.#QNAN0
変数を として定義してconst
も何も変わりません。
私のコンパイラは次のとおりです。MS Visual C++ 2012
コメントを読んだ後。
typedef struct {
P3C_Point *ProjectionPoints;
uint Distance,LayerID,NumberOfPoints,ModelID;} P3C_LayerOnCurtain;
/* and */
P3C_LayerOnCurtain **LOC = P3C_Compile(Stream);
/* when I try printf in P3C_Compile it has no problems */
値を返す前にテストを作成しました。関数で生成される「LOC」は完全にprintfです。
回答/解決策;
P3C_LayerOnCurtain *LOC = *P3C_Compile(Stream);