Hola! al final termine usando strtok ya que la conoces y sabes como usarlo. Solo que yo lo use para dividir la cadena en dos:
cadena 1: "1,2,3|4,5,6|7,8,9"
cadena 2: "9,8,7|6,5,4|3,2,1"
Otra cosa importante que habia que hacer
era convertir esos numeros en enteros, para eso use atoi
T dejo el codigo:
Código C:
Ver original#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#define FILA 3
#define COLUMNA 3
void func(char *vec,int mat[][COLUMNA]);
void imprimir(int mat[][COLUMNA]);
int main(void)
{
char vec[]="1,2,3|4,5,6|7,8,9@9,8,7|6,5,4|3,2,1";
int mat1[FILA][COLUMNA];
int mat2[FILA][COLUMNA];
int i,j;
// la primera llamada a strtok va a devolver esta cadena "1,2,3|4,5,6|7,8,9"
func(s,mat1);
while((s
=strtok(NULL
,"@"))!=NULL
) // la segunda llamada a strtok va a devolver esta cadena "9,8,7|6,5,4|3,2,1"
func(s,mat2);
imprimir(mat1);
imprimir(mat2);
return 0;
}
void func(char *vec,int mat[][COLUMNA])
{
int i,j=0,k;
for(i=0;i<FILA;i++) {
for(k=0;vec[j]!='|';j++) { // el for termina cuando encuentra '|'
if(vec[j]=='\0') // si es fin de linea sale del for
break;
if(!isdigit(vec
[j
])) // si no es un digito continua al siguiente ciclo continue;
else { // es un digito se guarda en la matriz
mat
[i
][k
]=atoi(&vec
[j
]); // convierto el caracter numero a su representacion en entero k++;
}
}
j++;
}
}
void imprimir(int mat[][COLUMNA])
{
int i,j;
for(i=0;i<FILA;i++) {
for(j=0;j<COLUMNA;j++)
{
}
}
}
El codigo esta comentado, si no lo entendes cualquier cosa pregunta.
T dejo hacer la parte de multiplicacion de las matrices
Saludos
PD: la funcion imprimir solo esta para verificar si estaba bien lo que hacia