Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[B]duda con vectores[/B]

Estas en el tema de [B]duda con vectores[/B] en el foro de C/C++ en Foros del Web. No entiendo lo que pasa. while(i<length) { //Queremos detectar la secuencia 00 00 00 01 if (buffer[i]==0) { cont=cont + 1; if((cont=='7')&&(buffer[i]=='1')) cabecera[i]=buffer[i]; } else ...
  #1 (permalink)  
Antiguo 28/07/2010, 03:28
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
[B]duda con vectores[/B]

No entiendo lo que pasa.

while(i<length)
{
//Queremos detectar la secuencia 00 00 00 01
if (buffer[i]==0)
{
cont=cont + 1;

if((cont=='7')&&(buffer[i]=='1'))
cabecera[i]=buffer[i];
}
else
payload[i]=buffer[i];

Donde he puesto la negrita es donde tengo el problema. El buffer esta lleno y buffer[0]=0 por tanto tendria que aumentar el cont en 1 y en cambio no entra en el if..

Seguro que es un error muy tonto pero ahora mismo no consigo verlo. Muchas gracias
  #2 (permalink)  
Antiguo 28/07/2010, 03:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: [B]duda con vectores[/B]

donde esta el i++? del bucle while?

porque sino el while no terminara nunca

ademas no se si es por copiar y pegar pero cont supongo que sera un int entonce sno pueds hacer la comparacion con '7' sino con 7 .

y buffer que es? una cadena o un vector de enteros porque luego tienes buffer[i]== '1'
si es una cadena entonces el error esta en que estas haciendo buffer[i] == 0 y quizas deberia ser == '0';

Saludos
  #3 (permalink)  
Antiguo 28/07/2010, 04:20
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: [B]duda con vectores[/B]

char leer()
{
int length;
char buffer[30];
char * buffers=NULL;
int i=0,aux=0,j=0,z=0;
char cabecera[32];
char payload[170];
static char NAL[200];
int v=0;

ifstream f; // Classe para leer un fichero.
f.open("text.txt",ifstream::in|ifstream::binary); // Es un hexadecimal.


//!f devuelve true si ha habido algún problema de apertura del fichero
if (!f)
{
cout << "fallo" << endl; // endl es el fin de linea.
return -1;
}
// get length of file:
f.seekg (0, ios::end);
length = f.tellg();
f.seekg (0, ios::beg);

// ir rellenando el buffer hasta hacer una NAL.

// allocate memory:
buffers = new char [length]; //Vector de datos buffer[length]

// read data as a block:
f.read (buffers,length);

//Guardamos los datos del puntero en un vector.
while(v<length)
{
buffer[v]=buffers[v];
v++;
}


while(i<length)
{


//Volem detectar la sequencia 00 00 00 01
if ((buffer[i]==0)&&(buffer[i+1]==0)&&(buffer[i+2]==0)&&(buffer[i+3]==0)&&(buffer[i+4]==0)&&(buffer[i+5]==0)&&(buffer[i+6])&&(buffer[i+7]==1))
{
for(aux=i;aux=i+7;aux++)
{
cabecera[aux]=buffer[aux];
}

}
else
payload[i]=buffer[i];


//// 31 o 32? mirar bien 31 o 32
while ((j<=31)&&(i==31))
{
NAL[j]=cabecera[j];
j++;
}

while(z>31)
{
NAL[z+32]=payload[z];
z++;

}
i++;
z++;
}
return NAL[200]; // Hay que decir la longitud exacta

f.close();


return NAL[200];
}



Gracias por contestar tan rapido. Aqui te pongo todo el codigo para que lo veas mas claro.
- Incremento la i al final del while
-cont es un int
-buffer es un vector de enteros. De un puntero (buffers) paso a un vector, eso esta bien?
- Ya he hecho antes '0' y tampoco funcionaba...
  #4 (permalink)  
Antiguo 28/07/2010, 04:25
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: [B]duda con vectores[/B]

ya lo tengo. Cuando hago el debug me sale:

48 '0'. Si en vez del 0 en el if pongo el 48, si que sale!

if (buffer[i]==48)
{
for(aux=i;aux=i+7;aux++)
{
cabecera[aux]=buffer[aux];
}

}

ALGUIEN SABE COMO SE RELACIONA EL 0 CON EL 48? HE PROBADO EL 1 Y ES EL 49. PORQUE?
  #5 (permalink)  
Antiguo 28/07/2010, 07:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: [B]duda con vectores[/B]

aa leches ahora caigo es que el 48 es el '0' en ASCII y el 49 es 1 en ASCII pero en teoria tal y como te dije si ponias '0' y '1' en los ifs deberia valer...
pero si con 48 y 49 te vale dejalo asi.
  #6 (permalink)  
Antiguo 29/07/2010, 09:43
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: [B]duda con vectores[/B]

Cita:
Iniciado por edu1989 Ver Mensaje
ya lo tengo. Cuando hago el debug me sale:

48 '0'. Si en vez del 0 en el if pongo el 48, si que sale!

if (buffer[i]==48)
{
for(aux=i;aux=i+7;aux++)
{
cabecera[aux]=buffer[aux];
}

}

ALGUIEN SABE COMO SE RELACIONA EL 0 CON EL 48? HE PROBADO EL 1 Y ES EL 49. PORQUE?
Porque tu vector buffer, es un arreglo de tipo char.
si almacenas valores numericos, la computadora utilizara las tablas ASCII para comprar, si comparas contra un tipo de dato int.

Si quieres utilizar los valores que tienes en el vector, entonces tienes que utilizar '0'

o puedes hacer typecast del arreglo char, a int
Código C:
Ver original
  1. if((int)buffer[i]==0)
  2. {
  3. //tu codigo
  4. }

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:30.