Programación General => C/C++ => Mensaje iniciado por: Mararía en Viernes 14 de Diciembre de 2007, 01:30
Título: Unas Cuantas Dudas Sobre Char* (y Char)
Publicado por: Mararía en Viernes 14 de Diciembre de 2007, 01:30
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.
Título: Re: Unas Cuantas Dudas Sobre Char* (y Char)
Publicado por: ProfesorX en Viernes 14 de Diciembre de 2007, 03:18
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
void itoa(int input, char *buffer, int radix)
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
char numero[5];
itoa(23, numero, 10);
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
char MayusculaNumero[10];
sprintf(MayusculaNumero, "%c%d", ch, a);
Respecto a tu segunda duda, asi es, el codigo ASCII de los numeros es consecutivo, lo que significa que '5' > '3' tal como dices.