Convertir matriz Char a Int con atoi

Iniciado por jfap45, 8 Agosto 2012, 20:02 PM

0 Miembros y 1 Visitante están viendo este tema.

jfap45

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

X3R4CK3R

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

jfap45

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!!

X3R4CK3R

#3
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

durasno

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
Ahorrate una pregunta, lee el man

BlackZeroX

The Dark Shadow is my passion.