elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Convertir de void a int
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convertir de void a int  (Leído 5,300 veces)
mester

Desconectado Desconectado

Mensajes: 219


https://www.youtube.com/watch?v=IlY9C6pzxKc


Ver Perfil WWW
Convertir de void a int
« en: 16 Noviembre 2015, 21:14 pm »

Hola.
Estoy probando eso de los threads en Linux con la programación en C para hacer un servidor de mensajes multicliente. El problema con el que me topo es:
1. La función para pasar el thread solo me permite pasar el argumento como void *.
2. La función no me permite pasar más de un argumento.
¿Me podríais ayudar?
He estado probando con la conversión clasica tal que así:
Código
  1. #include<stdint.h>
  2. ...
  3. void funcion(void *numero){
  4.      int a=(intptr_t)numero;
  5. ...
  6.  
Al imprimirlo dentro de 'función' me devulve un valor aleatorio.
Gracias de antemano.


En línea

Justicia es dar a cada uno lo que se merece
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Convertir de void a int
« Respuesta #1 en: 16 Noviembre 2015, 21:28 pm »

Tal vez te falta dereferenciar el puntero:
int a = *(int*)numero;


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Convertir de void a int
« Respuesta #2 en: 16 Noviembre 2015, 21:35 pm »

numero es un puntero, y tu quieres coger el contenido al que apunta numero, no el contenido de numero (la dirección), entonces debes cambiar esa línea por algo tipo
Código:
int a = *(intptr_t*)numero;
 si luego lo imprimes por ejemplo usando printf veras que es el valor correcto, por ejemplo el sigiente código imprimirá 123

Código
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. void funcion(void *numero) {
  5.  int a = *(intptr_t*)numero;
  6.  printf("%d", a);
  7. }
  8.  
  9. int main() {
  10.  int n = 123;
  11.  funcion((void*)&n);
  12.  
  13. }
  14.  

Como decia MAFUs, vamos...
« Última modificación: 16 Noviembre 2015, 21:41 pm por Stakewinner00 » En línea

mester

Desconectado Desconectado

Mensajes: 219


https://www.youtube.com/watch?v=IlY9C6pzxKc


Ver Perfil WWW
Re: Convertir de void a int
« Respuesta #3 en: 22 Noviembre 2015, 20:07 pm »

numero es un puntero, y tu quieres coger el contenido al que apunta numero, no el contenido de numero (la dirección), entonces debes cambiar esa línea por algo tipo
Código:
int a = *(intptr_t*)numero;
 si luego lo imprimes por ejemplo usando printf veras que es el valor correcto, por ejemplo el sigiente código imprimirá 123

Código
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. void funcion(void *numero) {
  5.  int a = *(intptr_t*)numero;
  6.  printf("%d", a);
  7. }
  8.  
  9. int main() {
  10.  int n = 123;
  11.  funcion((void*)&n);
  12.  
  13. }
  14.  

Como decia MAFUs, vamos...
Vale, solucionado, gracias
En línea

Justicia es dar a cada uno lo que se merece
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(void *) en funciones
Programación C/C++
Shon 4 5,332 Último mensaje 25 Enero 2011, 16:06 pm
por Littlehorse
dev-c++ ----> ¿void?
Programación C/C++
lalocr 7 18,937 Último mensaje 21 Abril 2011, 11:05 am
por <<<-Basura->>>
funciones INT vs VOID « 1 2 »
Programación C/C++
ALONSOQ 14 7,266 Último mensaje 4 Septiembre 2012, 16:49 pm
por ALONSOQ
Problema con un void
Programación C/C++
grossgore 2 1,841 Último mensaje 4 Mayo 2017, 16:10 pm
por dato000
Problemas con los void « 1 2 »
Programación C/C++
Sayuri108 18 6,775 Último mensaje 10 Enero 2018, 01:47 am
por srWhiteSkull
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines