c中的分段错误strcmp

Segmentation fault strcmp in c

我正在尝试 运行 一个 c 语言的程序,该程序从用户那里获取文本文件和字符串,然后在文件中搜索该字符串。它不断出现分段错误,gdb 将我指向此函数,但我不确定问题出在哪里。我很确定它与 strcmp 调用有关,但我不确定。非常感谢对此问题的任何帮助。

int inTable( const char *s )
{
    int i;

    for( i=0; i<numLines; ++i )
    {
        if( strcmp( st[i], s ) == 0 )
                return 1;
    }

    return 0;
}

我认为你应该检查 s:

int inTable(const char *s) 
{
     if (s == NULL)
     {
          return 0;
     }

     // invoke strcmp
}

确保 const char *s 以 '\0

结尾

你应该检查你是否正确使用了strcmp(),API是:

int strcmp(const char *str1, const char *str2)

你必须:

1) 验证 st[i],你的第一个参数是一个指针。

2) 确保 st[i] & s 有 Null 终止符 '\0'。

3) 在调用 strcmp().

之前检查 st[i] & s 指向内存中分配的位置