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

Cambio de varibale int a variable char

Estas en el tema de Cambio de varibale int a variable char en el foro de C/C++ en Foros del Web. Buenas, Tengo un problemilla con un programa con el que estoy trabajando.La cosa es que debo pasar una variable en numeros positivos a numeros negatibos.El ...
  #1 (permalink)  
Antiguo 07/01/2008, 03:08
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Cambio de varibale int a variable char

Buenas,

Tengo un problemilla con un programa con el que estoy trabajando.La cosa es que debo pasar una variable en numeros positivos a numeros negatibos.El cambio de signo lo he conseguido ejecutar pero el programa me exige que aparezcan en pantalla y la variable que debo utilizar para que pueda aparecer en pantalla es un char y no consigo pasar la variable integer a un String.He intentado con funciones de c++ como itoa y otros metodos como el casting pero nada.

Bueno pues si alguno me pudiera ayudar se lo agradeceria mucho.Aqui os dejo la parte del codigo donde se efectua el cambio de variable.Gracias de antemano.

Saludos

Código:
void CPresElemTabla::IntroducirValor(CDC *pDC,CString valor,int canal)
{
	CString texto;

	if (canal>0)
	{
		texto.Format("%i",canal);
		vent1->SetWindowText(texto);
		texto=((CEnsayo *)((CPresTabla *)principal)->ensayo)->NombreCanal(canal);
		vent2->SetWindowText(texto);
	}
	else
	{
		vent1->SetWindowText("");
		vent2->SetWindowText("");
	}

	int valor1=atoi(valor);
	valor1=-valor1;
	CString valor2=(char)valor1;
	vent3->SetWindowText(valor2);
}
  #2 (permalink)  
Antiguo 07/01/2008, 03:46
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Re: Cambio de varibale int a variable char

Usa ltoa para pasar el int (valor1) a una cadena.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 07/01/2008, 03:49
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 11 meses
Puntos: 24
Re: Cambio de varibale int a variable char

Para pasar de int a char es con un casting, pero cuidado si la variable es menor a 127 o mayor a 128 no te va a funcionar (te va a asignar un valor incorrecto, creo que el módulo 256 de la operacion).

La asignación se haría así:
Código:
variableChar = (char)VariableInt;
Si lo que quieres es pasar de int a cadena, puedes usar un simple sprintf. con el formato deseado. Ejemplo:
Código:
char buffer[100];
sprintf( buffer, "%+3d", variableInt );
__________________
Grupos de Música
Pop Music Stars
  #4 (permalink)  
Antiguo 07/01/2008, 04:04
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Re: Cambio de varibale int a variable char

Con un casting lo unico que se logra es interpretar parte de esa variable en codigo ASCII, si tuvieras 65 entonces tu char seria 'A'. No sirve para nada ya que solo toma el primer byte del int ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 07/01/2008, 04:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: Cambio de varibale int a variable char

Cita:
Iniciado por aloqui Ver Mensaje
Para pasar de int a char es con un casting, pero cuidado si la variable es menor a 127 o mayor a 128 no te va a funcionar (te va a asignar un valor incorrecto, creo que el módulo 256 de la operacion).

La asignación se haría así:
Código:
variableChar = (char)VariableInt;
Si lo que quieres es pasar de int a cadena, puedes usar un simple sprintf. con el formato deseado. Ejemplo:
Código:
char buffer[100];
sprintf( buffer, "%+3d", variableInt );
Gracias. La funcion sprintf ha solucionado mi problema.Muchas gracias otra vez.
A partir de hora lo tendre muy presente la funcion sprintf.jeje
un aplauso para ti

Saludos
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 22:21.