gpt4 book ai didi

c - 是否可以为 C 中的单个 char[] 行分析执行多个 "return"?

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:05 25 4
gpt4 key购买 nike

所以,问题是我正在尝试做一个词法分析器,我从句法分析器调用它。

我有这个:

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:我知道我可以做到这一点,例如,使用 Struct 并保存几个 int 值,但我不想使用它。

最佳答案

如果你想要一个更简单的解决方案,你可以添加另一个参数(通过引用传递方法)到 lexico 函数调用并使用 while 循环从主函数调用。

int lexico(char linea[MAXLINEA], int *rccnt)
{
(*rccnt)++;
......
return 1;
}


int main(int argc, char *argv[])
{
...
FILE *fichero;
fich = fopen("test", "r");
...
int l;
char buffer[MAXLINEA];
int chrcnt;
while(fgets(buffer,MAXLINEA,fich) != NULL){
chrcnt = 0; //set to zero for every buffer fetch
while(chrcnt < strlen(buffer))
l = lexico(buffer, &chrcnt);

...
}
}

希望这个答案能解决您的问题。

关于c - 是否可以为 C 中的单个 char[] 行分析执行多个 "return"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com