Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/06/2011, 00:44
tawky
 
Fecha de Ingreso: noviembre-2009
Mensajes: 36
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema con cadenas y punteros.

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?