Problemas con punteros en c
Mi problema es que al pasar un puntero 'char' a una funcion, intento comparar el valor de ese puntero dentro de esa función con 'strcmp' pero el valor no es que le ha sido pasado a la funcion, adjunto codigo:
Es decir que...
main()
{
char * buf_out;
buf_out = (char *)irp->AssociatedIrp.SystemBuffer;
request(buf_out);
}
int request(char *buf)
{
status = clear_a_flt_id(buf); //esta es la llamada a la funcion
return status;
}
int clear_a_flt_id(char *id)
{
printf("STRCMP: %x", strcmp("5",id));
return 1;
}
En el momento de hacer el printf la funcion strcmp me da 1 (no son iguales), cuando me tendria q estar dando 0 (igaules).
Sabe alguien porque?
Es decir que...
main()
{
char * buf_out;
buf_out = (char *)irp->AssociatedIrp.SystemBuffer;
request(buf_out);
}
int request(char *buf)
{
status = clear_a_flt_id(buf); //esta es la llamada a la funcion
return status;
}
int clear_a_flt_id(char *id)
{
printf("STRCMP: %x", strcmp("5",id));
return 1;
}
En el momento de hacer el printf la funcion strcmp me da 1 (no son iguales), cuando me tendria q estar dando 0 (igaules).
Sabe alguien porque?
No tiene mal aspecto.
Yo me inclino a que la causa de que no te salga bien proviene de:
irp->AssociatedIrp.SystemBuffer
Yo me inclino a que la causa de que no te salga bien proviene de:
irp->AssociatedIrp.SystemBuffer
gracias por responder gim, el caso es que en su momento a mi tambien se me ocurrio que podria ser esto, pero descarte esa posibilidad ya que si en lugar de hacer:
printf("STRCMP: %x", strcmp("5",id));
hago esto otro:
printf(id);
En este caso en el 'command line' me muestra lo correcto es decir la cadena "5".
En realidad no utilizo 'printf(id);' sino 'KdPrint((id));' ya que trabaja en modo kernel. De ahi que cada error que genera se me cae el sistema, y tengo que volver a registrar, cargar el driver...etc, pero bueno gajes del oficio.
Gracias.
printf("STRCMP: %x", strcmp("5",id));
hago esto otro:
printf(id);
En este caso en el 'command line' me muestra lo correcto es decir la cadena "5".
En realidad no utilizo 'printf(id);' sino 'KdPrint((id));' ya que trabaja en modo kernel. De ahi que cada error que genera se me cae el sistema, y tengo que volver a registrar, cargar el driver...etc, pero bueno gajes del oficio.
Gracias.
