私は構造体の配列を持っており、それぞれが私が信号と呼ぶものを記述しています。私は自分の構造をこのように宣言しました:
/* Structure for keywords */
struct varStruct
{
char* varName;
int varOccurence;
} signals[MAX_SIGNALS];
私はファイルを分析し、私の場合はnewArrayNameと呼ばれる信号宣言を動的に見つけるループで作業しています。私がやりたいのは、読み取り信号がまだ含まれていない場合にのみ、読み取り信号を配列に追加することです。それ以外の場合は、varOccurence変数をインクリメントする必要があります。
これが私のコードですが、セグメンテーション違反があります(したがって、これ以上の情報はありません)...
// We are in the loop that get the signals sequentially
char* newArrayName = TheValueOfTheReadSignal.
int i;
// We browse all the array...
for(i=0; i < MAX_SIGNALS; i++)
{
// If a signal already has the name of the currently-read signal, we inc its occurence
if(strcmp(signals[i].varName, newArrayName) == 0)
{
signals[i].varOccurence++;
}
// Otherwise, we add a new signal with the read-name and an occurence corresponding to the value of a static variable that's incremented after each signal-reading.
else
{
signals[index_Array].varName = newArrayName;
signals[index_Array].varOccurence = index_Array;
}
}
// We increment index_Array, which is a static int variable
index_Array ++;
// End of the loop that gets the signals
これはセグメンテーション違反につながります。私はC言語があまり得意ではありません、私はそれが非常に苦手だとさえ言うでしょう。ここでの私の推測では、シグナル配列が初期化されていないため、signal [i]は彼にとって意味がありませんが、構造体の配列を初期化する方法がわかりません。多分それは別の理由です、私は知りません。
ご助力ありがとうございます。