我试图计算存储在结构数组中的每个单词的出现次数。首先,我将整个文件读到缓冲区,然后从缓冲区中提取单词,然后通过strdup()将其放入结构数组中。尽管代码通常工作得很好,但有时它只会导致负责计算出现次数的段错误。
我试图为静态和动态结构数组分配内存。
/*Function counting occurences*/
void countOccurences(words * word, int numberOfWords) {
int d, g; //iterators
int counter;
for (d = 0; d < numberOfWords; d++) {
counter = 1;
if (word[d].toCheck == true) {
for (g = d + 1; g < numberOfWords; g++) {
if (strcmp(word[d].word, word[g].word) == 0) //if found
{
counter++;
word[g].toCheck = false;
word[g].count = -1;
}
}
}
word[d].count = counter;
}
}
希望可以正确地检查整个阵列而不会出现段错误
编辑:
在main中初始化数组如下:
words * word = malloc(sizeof(words)* numberOfWords);
答案 0 :(得分:0)
如果numberOfWords是正确的,并且您要传递的指针指向数组的开头,则此特定函数不应导致段错误。第一步是验证您使用正确的参数调用该函数。