Autor
|
Tema: Coger caracteres de una palabra (Leído 9,373 veces)
|
Komodo
Desconectado
Mensajes: 352
|
Tengo una duda, que es la siguiente como podría coger todos los caracteres de una palabra y sacar su valor ascii y guardarlos en un arreglo int, a ser posible, un ejemplo sería lo siguiente:
Komodo - 75,111,109,111,100,111
Simple, ¿no? aquí cogería la palabra Komodo y cada char lo pasaría a int dandonos su valor ascii, pues lo que busco es hacer eso y que esos valores ascii se guarden como enteros.
Gracias
|
|
|
En línea
|
|
|
|
AckeR
Desconectado
Mensajes: 109
Tu única Limitación Es tú Imaginación (:
|
Buenas! Podrias Hacer algo asi : int valorAscii=0; char letra = 'A'; valorAscii = (int)letra;
No lo he Compilado, pero creo que así debería funcionar. Suerte!
|
|
|
En línea
|
...DaR LaS GraCiaS No CuestA NadA...
|
|
|
Dellarts
Desconectado
Mensajes: 12
|
Yo lo haria asi void main(){ int x, valor; char cadena[50] ="komodo";
for(x=0;x<strlen(cadena);x++) valor = atoicadena[x];
}
Igual tiene algun error de compilacion x es asi.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { char cadena[] = "75,111,109,111,100,111", copia[200]; char *elemento = strtok(cadena , ","); unsigned short int i = 0, j = 0; while(elemento != NULL) { i++; } signed int *vector = (int *)malloc(sizeof(int) * i ); elemento = strtok(copia , ","); while(elemento != NULL) { *(vector + j ++) = atoi(elemento ); } for(j = 0; j < i; j++) printf("[%d]", *(vector + j )); return 0; }
|
|
« Última modificación: 1 Mayo 2010, 22:26 pm por Leo Gutiérrez. »
|
En línea
|
|
|
|
DarkItachi
Desconectado
Mensajes: 516
Itachi Uchiha
|
char* stringtoascii(char *cad) { int size=strlen(cad); char *supercad=new char[size*5]; strcpy(supercad,""); for (int n=0;n<size;n++) { char *num=new char[3]; itoa(int(cad[n]),num,10); supercad=strcat(supercad,num); if (n!=size-1) supercad=strcat(supercad,","); } return supercad; }
|
|
|
En línea
|
Come to me when you have these eyes...
By more that you try it, a feather never will achieve to fly.
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
@DarkItachi
Algunas cuestiones con tu código.
-Poner más de una sentencia en una línea, es un mal hábito de programación, aunque el compilador lo permita.
-itoa() no forma parte del standard, aunque algunos compiladores lo permitan.
|
|
|
En línea
|
|
|
|
DarkItachi
Desconectado
Mensajes: 516
Itachi Uchiha
|
@DarkItachi
Algunas cuestiones con tu código.
-Poner más de una sentencia en una línea, es un mal hábito de programación, aunque el compilador lo permita.
-itoa() no forma parte del standard, aunque algunos compiladores lo permitan.
Cierto, itoa no forma parte del standard, lo tendré en cuenta Respecto a lo de poner más de una sentencia en una línea, para mí es un buen hábito, junto cosas relacionadas para no confundirme y en if/while/for si son sentencias cortas para que el código quede más compactado. Gracias por dar tu opinión
|
|
|
En línea
|
Come to me when you have these eyes...
By more that you try it, a feather never will achieve to fly.
|
|
|
Og.
Desconectado
Mensajes: 822
Aprendiendo de la vida
|
4 códigos, 1 no tienen nada que ver con el tema, 1 no hace absolutamente nada y el de DarkItachi no es lo que se necesitaba (lee el post xD). Ninguna respuesta concisa El tipo de dato char, es de 1 byte (8 bits) osea que puedes guardar 2 8 posibles combinaciones (estas combinaciones son la tabla ASCII). realmente cuando guardas un carácter en un entero, estas guardando un numero el cual se representa como ese carácter que quieres almacenar. Por ejemplo intenta hacer esto: std::cout << 'a' << std::endl << (int)'a';
lo que ese código te mostrara sera simplemente: 97 es el valor que en la tabla ASCII equivale a 'a'. si quieres convertir una cadena de caracteres puedes simplemente hacer: int* nnn(const char *str) { unsigned short int len = 0; while(*(str+(len++))); int *arregloF = new int[len], *cpy = arregloF; while(*str) *(cpy++) = *str++; return arregloF; }
asi nnn("Komodo");
te devolverá un arreglo con los valores: 75, 111, 109, 111, 100, 111 Saludos.
|
|
« Última modificación: 2 Mayo 2010, 02:20 am por Og. »
|
En línea
|
|-
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
int *arregloF = new int[len], *cpy = arregloF;
Nunca habia visto algo asi Ese cpy de donde salio?? Aunque me parece mejor el de Acker... Pero pes el tuyo ta interesante Saludos...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Entendí mal el problema. Solo tomé en cuenta esto: Komodo - 75,111,109,111,100,111 Es decir, mi código toma esto: Y lo muestra así: int *arregloF = new int[len], *cpy = arregloF;
Ese cpy de donde salio?? Son definiciones y creaciones múltiples, yo no le veo el error.
|
|
« Última modificación: 2 Mayo 2010, 02:25 am por Leo Gutiérrez. »
|
En línea
|
|
|
|
|
|