我有一个结构数组,每个结构都描述了我所说的信号。我以这种方式声明了我的结构:
/* 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] 对他没有任何意义,但是我不知道如何初始化一个结构体数组。也许是另一个原因,我不知道。
非常感谢您的帮助。