Perdon por tener un codigo tan sucio , pero es que me esta volviendo loco esto.
si me refiero al primer numero.
He descomentado el printf que dices. Te pongo la funcion que le los numeros.
int _file_ply::next_token()
{
printf("<<<<<<<<<<<<<<<<<<");
char *p1,*p2;
char Aux_token[100];
int Num_char;
do
{
printf("||%d||",strlen(Buffer));
if (strlen(Buffer)==0)
{
if (read_line()==-1) return(-1);
while (Buffer[0]=='#') if (read_line()==-1) return(-1);
}
p1=Buffer;
int conti=0;
printf("\nraa2 -- %d:%s",Num_lines,Buffer);
while ((*p1==' ' || *p1=='\t') && *p1!='\n'){ p1++;conti++;}
p2=p1;
if(*p2!='\n')
printf("conti %d la %c ",conti,*p2);
else
{
printf("salti %d la ",conti);
if (strlen(Buffer)==4)
{
printf("CUMPLE");
//p1++;
}
}
while (*p2!=' ' && *p2!='\t' && *p2!='\n') {p2++;conti++;}
Num_char=p2-p1;
if (Num_char>99)
{
error("number of characters for token is too long\n");
return(-1);
}
if (Num_char!=0)
{
strncpy(Aux_token,p1,Num_char);
Aux_token[Num_char]='\0';
}
if (*p2=='\n'){ Buffer[0]='\0'; printf("arriba ");}
else {strcpy(Buffer,p2); printf("abajo ");}
}
while (Num_char==0);
if (!is_number(Aux_token))
{
//printf("es un numero %s\n",Aux_token);
Yylval.Real=atof(Aux_token);
printf("%f\n",Yylval.Real);
return((int)_tokens(NUMBER));
}
else
{
//printf("es texto %s\n",Aux_token);
Yylval.Text=Aux_token;
return(search_token(Aux_token));
}
}
ahora la ejecucion cuando empieza a leer las lineas con 4 numeros.
pasados 0
<<<<<<<<<<<<<<<<<<||2||
raa2 -- 495:
salti 1 la arriba ||0||
raa -- 496:3 0 1 2
<9>
raa2 -- 496:3 0 1 2
conti 0 la 3 abajo 3.000000
<<<<<<<<<<<<<<<<<<||8||
raa2 -- 496: 0 1
conti 1 la 0 abajo 0.000000
<<<<<<<<<<<<<<<<<<||6||
raa2 -- 496: 1
conti 1 la 1 abajo 1.000000
<<<<<<<<<<<<<<<<<<||4||
raa2 -- 496:
salti 1 la CUMPLEarriba ||0||
raa -- 497:3 1 3 2
al leer la linea 496 coge los 4 numeros , pero en la funcion de lectura de los numeros al leer el numero 3, se pierde el ultimo numero que seria el 2.
¿por que desaparece del buffer?