我对 C 编程相对较新,我正在尝试制作一个分隔符检查器,但由于某种原因,每次我运行我的代码并获取我的输入来检查分隔符时,它都会出现分段错误(核心转储)错误。
下面是主程序的代码:
int
main (void)
{
char* mystring;
printf ("Please enter a string\n");
gets(mystring);
if (fsm(mystring))
{
printf ("All matched");
}
}
似乎它从未进入子程序fsm
,因为我在printf
子程序的开头输入了一个权利,它从未出现过。printf
它确实会询问我的输入,如果我把它放在子程序行之前的主程序中,它会打印出来。
这是我的原型:
boolean fsm(char[]);
如果有任何帮助,这里是子程序的开头:
boolean fsm (char mystring[])
{
printf("here\n");
int counter = -1;
int state = 0;
c_stack top;
c_init_stack (&top);
while (1)
{
switch (state)
{
case 0:
counter = counter + 1;
if (is_open (*mystring))
state = 1;
else if (is_close (*mystring))
state = 2;
else if (mystring = '\0')
state = 3;
else
state = 4;
break;