Programación General > C++ Builder
Convertir De Int A Char O Viceversa??
Ziara:
Hola a todos, a ver si me pueden echar una mano.
tengo un ListView en vsReport, donde con:
--- Código: Text --- int index = this->ListView->ItemIndex;index = index + 1; pinchando en cada fila/renglón del ListView, puedo saber a cuál pertenece, si pincho en la fila 1, index = 1 y así sucesivamente.
por otra tengo un .txt donde guardo información sobre cada renglón de la manera:
--- Código: Text ---1nombre:pepeedad:14ciudad:madrid 2nombre:pepaedad:25 ciudad:madrid
para leer del fichero uso:
--- Código: Text --- FILE *OFile = fopen("fichero.txt","r");char linea[50];char c; if (OFile == NULL){ ShowMessage("Error al abrir el fichero");} c = fgetc(OutFile);
donde fgetc devuelve el primer caracter leido, en este caso sería c = 1 ya que es el primer caracter del texto.
Lo que quiero es que cuando pinche sobre un renglón me lea justo la información que le toca, es decir, si pincho sobre el renglón 2, empiece a leer desde:
2
nombre:pepa
edad:25
ciudad:madrid
del fichero.txt
para ello he probado con:
--- Código: Text --- if (c == index) { //fgets(linea, 50, OutFile); ShowMessage("son iguales"); //while }else ShowMessage("ein??");
pero nunca se mete en el if, aunque c = 1 y index = 1, he pensando que era por que uno es del tipo char y otro es int, pero al forzar la conversión tampoco funciona.
como puedo convertir un int a un char o viceversa?
gracias.
Elforious:
Puedes probar las funciones:
StrToInt( <variable String> ); Devuelve entero.
IntToStr( <variable String> ); Devuelve string.
Pero son de Borland; para más información acerca de estas funciones fijate en la ayuda.
Espero haber ayudado.
AnimaSubtilis:
que me acerde la funcion para convertir de entero a char es la atoi
n = atoi(str);
y funciona con la libreria stdlib.h o la stdio.h...
Espero que sirva de algo.....
Ziara:
Hola de nuevo, ante todo gracias por contestar, he probado con las funciones.
La de StrToInt funciona muy bien:
--- Código: Text ---int cline = StrToInt(linea[0]); //asi convierto el primer caracter de la linea a leer
pero luego he visto que cuando leo la segunda linea de mi fichero, que el primer carácter ya no es del tipo 1,2,3 sino una letra, la función me dice que no puede convertirlo a un entero. Con lo cual por ahi no puedo seguir.
Luego he probado con la función IntToStr de la siguiente manera:
--- Código: Text ---int index = this->ListView->ItemIndex;index = index + 1; String s = IntToStr (index); //leer desde ficheroFILE *OutFile = fopen("PAQUETES.txt","r");char linea[50]; if (OutFile == NULL){ ShowMessage("Error al abrir el fichero");} fgets(linea, 50, OutFile); if (linea[0] == s) { ShowMessage("encontrado"); ShowMessage(linea); } else ShowMessage("error"); fclose(OutFile);
pero aqui en el if no entra nunca, aunque linea[0] y s sean iguales... saben porque??
Elforious:
Lo que pasa es que estás comparando un String con un char.
Tienes que poner la función "c_str()" en el if así:
--- Código: Text --- if (linea[0] == s.c_str())
c_str() te devuelve una cadena de carácteres que obtiene de un string, y en este caso te devuelve una cadena de 1, y así ya lo pudes comparar.
Pos si acaso, tu comparación está bien por que compara un solo caracter, pero para comparar una cadena de más de un caracter con otra, está la función "strcmp(<string1>,<string2>)" que devuelve 0 si son iguales los dos string.
Para más información chekea la ayuda.
Espero haber ayudado...
Navegación
[#] Página Siguiente
Ir a la versión completa