0

所以我试图使用顺序搜索来检查一个字符串在我的数组中出现了多少次。在我的程序中,我要求用户选择他们希望打开并处理的文件。

void search(char **table, int **frequency, int wordSize)
{
//  Local Declaration
int i, j;
int count = 1;
char target[25];

// Statement
for(i = 0; i < wordSize; i++)
{
    if(table[i] != NULL)
    {
        strcpy(target, table[i]);
        for(j = i + 1; j < wordSize; j++)
        {
            if(strcmp(target, table[j]) == 0 && target != table[i])
            {
                count++;
                free(table[j]);
                table[j] = NULL;
            }
        }
    }
    count = 1;
}

return;
}

所以在这两个文件中,其中一个打开并处理没有任何问题,但是当我尝试打开第二个文件时它崩溃了。我试图了解导致我的程序崩溃的原因,因为这两个文件都只包含字符串,并且没有一个字符串超过 24 个字符。

4

1 回答 1

3
if(table[j] != NULL && strcmp(target, table[j]) == 0 && target != table[i])

您可能正在访问您在上一次迭代table中编辑的变量。NULL

于 2013-02-26T03:16:47.120 回答