говорят, использовать goto это моветон

вот например цветочекита, которая выцепляет из текста цифры и делает из них числа, в том числе отрицательные, даже если они стоят вплотную (например если написано 32-23, то оно сначала даст число 32, а потом -23.
как это сделать без гото?

int getcifr(void){
int c;
int cc;
int z=0;
static int zz;
nahui:
c=getchar();
while(c!='-' && !(c>='0' && c<='9')){
c=getchar();
z=0;
zz=0;
}
if(c=='-'){
z=1;
zz=0;
goto nahui;
}
cc=c-'0';
c=getchar();
while(c>='0'&&c<='9'){
cc=cc*10+(c-'0');
c=getchar();
}
if(z||zz){cc=(-1*cc);}
if(c=='-'){
zz=1;
}
return cc;
}