• Sábado 14 de Diciembre de 2024, 20:26

Autor Tema:  Unas Cuantas Dudas Sobre Char* (y Char)  (Leído 966 veces)

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Unas Cuantas Dudas Sobre Char* (y Char)
« en: Viernes 14 de Diciembre de 2007, 01:30 »
0
Hola.. Tengo unas cuantas dudas sobre estos tipos de datos...

A ver.. la primera, supongamos una variable de tipo char*, pero que se construye a través de otras variables .. Cómo lo haría? Decir, mi char* debe tener la forma MayusculaNumero (por ej A10) pero se le pasa por un lado la A (char ch) y por otro el 10(int a).. ¿Cómo consigo que mi char* sea "A10"?

Por otra parte, aunque supongo que la respuesta es sí, necesisto asegurarme... Si un numero es mayor que otro, su caracter (o cadena de caracteres) es tambien mayor? Es decir supongamos los enteros 3 y 5.. 5 > 3 pero es '5' > '3' tambien?
Gracias.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Unas Cuantas Dudas Sobre Char* (y Char)
« Respuesta #1 en: Viernes 14 de Diciembre de 2007, 03:18 »
0
Pues mira, respecto a tu primera pregunta hay 2 soluciones a tu problema, si deseas unir una variable de tipo int con una tipo string (o char* como le dices, que aunque realmente no es lo mismo, supongamos que lo es), utilizar la funcion

Código: Text
  1.  
  2. void itoa(int input, char *buffer, int radix)
  3.  
  4.  

donde input es el numero que quieres convertir a char, buffer es la variable en donde guardaras el numero convertido, y radix, la base a la que quieres convertir, en este caso supongo que trabajas en base 10, asi que si quisieras convertir el numero 23, pondrias:

Código: Text
  1.  
  2. char numero[5];
  3. itoa(23, numero, 10);
  4.  
  5.  

y luego usarias strcat para hacer la concatenacion de cadenas.

El detalle es que itoa no esta el estandar ansi c, asi que no es portable.

La mejor solucion seria usar la funcion sprintf, (o snprintf) que funciona identico a printf, con la diferencia que la salida se guarda en un string, en lugar de ir hacia la pantalla

tomando tu ejemplo, seria:

Código: Text
  1.  
  2. char MayusculaNumero[10];
  3. sprintf(MayusculaNumero, "%c%d", ch, a);
  4.  
  5.  

Respecto a tu segunda duda, asi es, el codigo ASCII de los numeros es consecutivo, lo que significa que '5' > '3' tal como dices.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================