注:私はC++コンパイラを使用しているため、参照渡しを使用できる理由
奇妙な問題があり、何が起こっているのかよくわかりません。
基本的に、テキスト ファイルがあります: http://pastebin.com/mCp6K3HB で、テキスト ファイルの内容をアトムの配列に読み込んでいます。
typedef struct{
char * name;
char * symbol;
int atomic_number;
double atomic_weight;
int electrons;
int neutrons;
int protons;
} atom;
これは私のアトムの型定義です。
void set_up_temp(atom (&element_record)[DIM1])
{
char temp_array[826][20];
char temp2[128][20];
int i=0;
int j=0;
int ctr=0;
FILE *f=fopen("atoms.txt","r");
for (i = 0; f && !feof(f) && i < 827; i++ )
{
fgets(temp_array[i],sizeof(temp_array[0]),f);
}
for (j = 0; j < 128; j++)
{
element_record[j].name = temp_array[ctr];
element_record[j].symbol = temp_array[ctr+1];
element_record[j].atomic_number = atol(temp_array[ctr+2]);
element_record[j].atomic_weight = atol(temp_array[ctr+3]);
element_record[j].electrons = atol(temp_array[ctr+4]);
element_record[j].neutrons = atol(temp_array[ctr+5]);
element_record[j].protons = atol(temp_array[ctr+6]);
ctr = ctr + 7;
}
//Close the file to free up memory and prevent leaks
fclose(f);
} //AT THIS POINT THE DATA IS FINE
これが、データを読み取るために使用している関数です。この関数をデバッグし、最後まで実行すると、デバッガーを使用してその内容を確認します。配列には 100% 正しいデータが含まれています。つまり、すべての要素がテキスト ファイルに対して相対的であるべきです。 http://i.imgur.com/SEq9w7Q.pngこの画像は、私が話していることを示しています。左側では、0 から 127 までのすべての要素が完全です。次に、呼び出し元の関数に移動します。
atom myAtoms[118];
set_up_temp(myAtoms); //AT THIS POINT DATA IS FINE
region current_button_pressed; // NOW IT'S BROKEN
load_font_named("arial", "cour.ttf", 20);
panel p1 = load_panel("atomicpanel.txt");
panel p2 = load_panel("NumberPanel.txt");
ANYTHING が呼び出されるとすぐに、 を呼び出した後set_up_temp
、配列の要素 103 から 127 がぎこちなくなります。より多くのものが呼び出されると、さらに多くの配列がぎこちなくなります。これは奇妙です。何が起こっているのかわかりません。ありがとう。