所以,事情是我试图做一个词法分析器,我从一个语法分析器调用它。是否可以对C中的单个char []行分析执行多个“返回”?
我有这样的:
int lexico(char linea[MAXLINEA])
{
if (linea[0] == '1') return 1;
else if (linea[0] == '2') return 2;
else if (linea[0] == '3') return 3;
else if (linea[0] == '4') return 4;
else return -1;
return 0;
}
int main(int argc, char *argv[])
{
...
FILE *fichero;
fich = fopen("test", "r");
...
int l;
char buffer[MAXLINEA];
while(fgets(buffer,MAXLINEA,fich) != NULL){
l = lexico(buffer);
...
}
}
这仅仅是一个坏榜样。
所以,想象我在linea[1]
东西,并首次重返main
后,我想回到lexico
并继续分析linea[1]
。可能吗?
预先感谢您。 PS:我知道我可以做到这一点,例如,使用结构和保存几个int值,但我不想使用它。
好吧,您可以根据您的意愿使用该功能。只有在达到一定条件时才需要停止呼叫。 – 2014-12-04 11:42:02
顺便说一句,在你的函数中'return 0;'是不必要的,因为你有一个完整的if/else在每种情况下你都返回,所以函数体的末尾可以达到;} – dhein 2014-12-04 11:43:14
@NatashaDutta谢谢你的回答,但我不明白你的意思。 – Zariweya 2014-12-04 11:44:36