我试图在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;
}
答案 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
结尾