【发布时间】:2012-11-27 01:00:04
【问题描述】:
#include<string.h>
#include<stdio.h>
int firstState(char s[], int length);
int secondState(char s[], int length);
int thirdState(char s[], int length);
int forthState(char s[], int length);
int main()
{
char string[10];
gets(string);
if( firstState(string, 0) )
printf("Accept\n");
else
printf( "Not accept\n" );
return 0;
}
int firstState(char s[], int length)
{
if(s[length] == 'a')
return (secondState(s, length++));
else if(s[length] == 'b')
return firstState(s, length++);
else
return 0;
}
int secondState(char s[], int length)
{
if(s[length] == 'a')
return secondState(s, length++);
else if(s[length] == 'b')
return thirdState(s, length++);
else
return 0;
}
int thirdState(char s[], int length)
{
if(s[length] == 'a')
return secondState(s, length++);
else if(s[length] == 'b')
return forthState(s, length++);
else
return 0;
}
int forthState(char s[], int length)
{
if(s[length] == 'a')
return secondState(s, length++);
else if(s[length] == 'b')
return firstState(s, length++);
else
return 0;
}
它给了我一个分段错误或核心转储我很困惑!!! 有人可以解释为什么它给了我这种错误吗???? 并告诉我如何调试以使我的代码运行得非常清晰!!
我真的厌倦了这个:(
对不起我的英语不好
【问题讨论】:
-
错误信息中是否包含行号?它指向哪里?
-
您要测试的字符串是什么?
-
您的平台是否包含调试器?
-
你倾向于多次增加偏移量而不检查
string的长度,这只是10! -
注意:所有的 xxxState() 函数都只能返回 0。如果它们返回,则无法获得返回 != 0。
标签: c segmentation-fault