Disculpen, quiero convertir el contenido de una matriz q leo como char y luego copiarla a otra matriz pero como entero (usando atoi), ya lo intente pero supongo q algo tengo mal:
Ejemplo: tengo la siguiente mariz
123 45
12 67
44 89
123 678
estan los numeros separados ppor espacios pero cuando lo hago no me lee bien, aki el codigo
[code]char* M[filas][columnas];
for (i=0; i<filas;i++)
for (j=0;j<columnas;j++)
Mat[i][j]= atoi(M[i][j]);
[/code]
y no hace lo q quiero sino q imprime por ejemplo:
1 23
4 5
12 6
7 4
89
y ni termina de imprimirlos, espero me puedan ayudar xfavor
No acostumbro a usar atoi, pero puedo recomendarte que pruebes a usar:
C -> http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
C++ -> http://www.cplusplus.com/reference/iostream/stringstream/
Si tienes problemas o no sabes como usarlas hazlo saber y te pongo unos ejemplos cuando pueda. ;)
Saludos
Gracias, estudiare lo que me mandas!
Cabe decir que si en la matriz posicion 0,0 tengo '147' al convertirlo a entero quiero ese mismo valor, no su ekivalente en ASCII!
Si tienes algunos ejemplos, pasamelos xfavor!!
Gracias y saludos!!
Al pensar en los ejemplos me he dado cuenta de que las funciones que te propuse sirven para pasar enteros a cadena de texto, no al contrario, así que retiro lo anterior. :-X
Por otra parte, creo que te sería más fácil hacer un array de string ( string[] ) donde almacenes cada línea de enteros, a no ser que el programa tenga que ser en C y no C++... Tampoco sé exactamente lo que quieres, podrías explicar el fin de tu programa y quizás así pueda ayudarte más.
Cita de: jfap45 en 8 Agosto 2012, 21:29 PM
Cabe decir que si en la matriz posicion 0,0 tengo '147' al convertirlo a entero quiero ese mismo valor, no su ekivalente en ASCII!
Obviamente, de lo contrario bastaría con (int)147 :xD Pero... en M[0][0] no puede haber un "147". :silbar:
Saludos
Hola! la funcion atoi convierte la parte inicial de una cadena siempre y cuando sea un numero. Si vos tenes la cadena: "123 45" atoi solo va a convertir la subcadena "123" a int, ya que despues del '3' hay un espacio(no es un numero por lo tanto deja de convertir). Fijate como haces para convertir el "45" tambien(tal vez strtok te sirva como ayuda)
Aclaracion:
char* M[filas][columnas];
esto es una matriz de punteros a char, es decir cada posicion de la matriz es un puntero
char M[filas][columnas];
esto es una matriz char, es decir cada posicion de la matriz es un char
Aclare esto porque hay una diferencia importante, y como subiste muy poco codigo nose si realmente queres usar una matriz de punteros.
Saludos
para hacer una conversion de string a numero tienes las funciones
http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/
http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/
http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/
etc...
Dulces Lunas!¡.