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

pasar char to int

Estas en el tema de pasar char to int en el foro de C/C++ en Foros del Web. alguien me podria ayudar a saber como poder pasar el valor de una variable char a otra int? pues leo de una cadena con getline ...
  #1 (permalink)  
Antiguo 21/03/2007, 05:42
 
Fecha de Ingreso: julio-2006
Mensajes: 17
Antigüedad: 17 años, 9 meses
Puntos: 0
pasar char to int

alguien me podria ayudar a saber como poder pasar el valor de una variable char a otra int? pues leo de una cadena con getline y ese valor tengo que mandarlo por outport y si o si envia un valor entero. gracias
  #2 (permalink)  
Antiguo 21/03/2007, 06:17
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: pasar char to int

Ayudaria mucho que explicaras bien lo que quieres hacer, porque asi cm lo estas planteando entiendo que quieres hacer algo asi:

Código:
char a;
int b;
a='d';
b=a;
Ahi obtendrias el valor ASCII de la letra d.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 21/03/2007, 07:12
 
Fecha de Ingreso: julio-2006
Mensajes: 17
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: pasar char to int

lo q quiero hacer es lo siguiente, este es el codigo:

char valor[4];
ifstream lectura("C:\\VertrigoServ\\www\\doc.txt");
lectura.getline(valor, sizeof(valor));
outport(0x378,valor);

yo leo un valor (q es un numero) del archivo doc. txt y ese valor lo quiero enviar al puerto paralelo con la funcion outport. el problema es q no me deja enviar el valor de la variable valor porq es un char y envio solo int. gracias
  #4 (permalink)  
Antiguo 21/03/2007, 08:40
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: pasar char to int

¿Y por que no lees el valor directamente como un entero? en vez de leerlo primero como una cadena de caracteres y luego transformarlo

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 21/03/2007, 09:12
 
Fecha de Ingreso: julio-2006
Mensajes: 17
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: pasar char to int

porque el getline lee solo cadena de caracteres. tambien habia pensado esa solucion pero no es posible. gracias de todos modos
  #6 (permalink)  
Antiguo 21/03/2007, 09:15
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: pasar char to int

Si estas utilizando algunas librerias de Ansi C, podrias intentar con sprintf, auqneu deberías chequear la compatibilidaad con el resto de las librerias C++

Slds.
  #7 (permalink)  
Antiguo 21/03/2007, 09:28
 
Fecha de Ingreso: julio-2006
Mensajes: 17
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: pasar char to int

en realidad lo que quisiera hacer seria algo asi:

int v;
char valor[4];
ifstream lectura("C:\\VertrigoServ\\www\\doc.txt");
lectura.getline(valor, sizeof(valor));
v=valor;//se que esto no se puedo pero es lo q quiero hacer
outport(0x378,v);

es decir antes de enviar el v al puerto
  #8 (permalink)  
Antiguo 21/03/2007, 09:35
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: pasar char to int

Sprintf no te sirve, disculpa me confundi, pero prueba con esto:
#include <stdlib.h> ---> Es de Ansi C

int v;
<tu codigo>
v=atoi(valor);
outport(0x378,v);
  #9 (permalink)  
Antiguo 21/03/2007, 09:52
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: pasar char to int

Cita:
porque el getline lee solo cadena de caracteres. tambien habia pensado esa solucion pero no es posible. gracias de todos modos
Tienes razon pero si lo haces asi:
Código:
int v;
ifstream lectura("C:\\VertrigoServ\\www\\doc.txt");
lectura >> v;
outport(0x378,v);
Resuelves el problema del modo que te estaba comentando.

La solucion propuesta por heraldex es completamente valida aunque no es de mi agrado lerr algo como una cadena y luego pasarlo a entero cuando no hay necesidad de ello.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #10 (permalink)  
Antiguo 22/03/2007, 09:21
 
Fecha de Ingreso: julio-2006
Mensajes: 17
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: pasar char to int

gracias a ambos por ayudarme. finalmente lo hice con
lectura >> v;
anda perfecto de las dos maneras
  #11 (permalink)  
Antiguo 22/03/2007, 11:16
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: pasar char to int

Cita:
gracias a ambos por ayudarme.
De nada

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #12 (permalink)  
Antiguo 30/11/2009, 09:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: pasar char to int

He realizado un programa que me permite leer el puerto serie, pero me muestra los datos como tipo char y quiero que me los muestre como enteros. He estado probando vuestras soluciones pero ninguna me ha funcionado(o no he sabido funcionarla)

Pego el código del programa por si a alguien se le ocurre una posible solución para que la variable sResult me salga como hexadecimal(o como mucho en decimal).

Muchas gracias!

int main(int argc, char **argv) {
int result;
char sResult[254]; //variable que contendra lo leido a traves del puerto

//Abro puerto RS232
fd = open("/dev/ttyM0", O_RDONLY| O_NOCTTY | O_NDELAY); //Creo socket para solo lectura | | no bloqueante, si se quiere abrir el socket de lectura y escritura cambiar O_RDONLY, por O_RDWR
if (fd == -1) { //Si hay error al abrir
perror("open_port: Unable to open /dev/ttyM0 - ");
return 1;
} else {
fcntl(fd, F_SETFL, 0);
}

printf("baud=%d\n", getbaud(fd)); //imprimo la velocidad del puerto en badios por defecto
initport(fd); //inicializo el puerto
printf("baud=%d\n", getbaud(fd)); //imprimo la velocidad en baudios del puerto despues de realizar la inicializaci�n

//Codigo para escribir datos a traves del puerto RS232, como no queremos escribir, lo comento
/*char sCmd[254];
sCmd[0] = 0x41;
sCmd[1] = 0x42;
sCmd[2] = 0x43;
sCmd[3] = 0x00;

if (!writeport(fd, sCmd)) {
printf("write failed\n");
close(fd);
return 1;
}

printf("written:%s\n", sCmd);*/



do{
usleep(5000000); //Tiempo a esperar como maximo para leer un dato del puerto

fcntl(fd, F_SETFL, FNDELAY); // no bloqueo el puerto serie para letura
result = readport(fd,sResult);
if (!result) { //sino se lee nada del puerto
printf("FALLO DE LECTURA\n");
close(fd);
return 1;
}
//printf("contenido del puerto=%s\n", sResult); //imprimo el contenido leido


}while (result); //Repito operacion leer mientras no haya error

close(fd); //cierro el puerto
return 0;
}
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 17:53.