c中的分段错误strcmp

时间:2015-06-01 06:08:14

标签: c debugging segmentation-fault gdb strcmp

我试图在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;
}

2 个答案:

答案 0 :(得分:4)

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

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

你必须:

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

2)确保st[i]&amp; s有Null终结符'\ 0'`。

3)检查st[i]&amp; s在调用strcmp()之前指向内存中已分配的位置。

答案 1 :(得分:1)

我认为你应该检查一下:

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

     // invoke strcmp
}

确保const char *以'\ 0

结尾