所以,事情是我試圖做一個詞法分析器,我從一個語法分析器調用它。是否可以對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