Leyendo un archivo de texto en una matriz en C.
Tengo un archivo de texto que contiene datos de 200 x 150 (cada número está separado por un espacio). Estoy tratando de almacenar estos números en una matriz. Mi código es el siguiente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int i,j, matrix[200][150];
void getMatrix(){
FILE *file;
file = fopen("PICTURE.txt", "r");
char *line, *number;
j = 0;
while(!feof(file)){
i = 0;
fscanf(file, "%s", line);
number = strtok(NULL, " ");
while(number!= NULL){
matrix[i][j] = atoi(number);
}
printf("\n");
j++;
}
}
void printMatrix(){
int a, b;
for(a=0; a<i; a++){="" for(b="0;"></i;><j; b++){
printf("%d", matrix[a][b]);
}
printf("\n");
}
}
int main(){
getmatrix();
printmatrix();
}
no muestra absolutamente nada. no entiendo por qué. ¿cómo puedo corregir mi código o tienes alguna otra sugerencia para volver a escribirlo? b++){=”” printf(“%d”,=”” matrix[a][b]);=”” }=”” printf(“\n”);=”” }=”” }=”” int=”” main(){=”” getmatrix();=”” printmatrix();=”” }=”” “`=”” no=”” muestra=”” absolutamente=”” nada.=”” no=”” entiendo=”” por=”” qué.=”” ¿cómo=”” puedo=”” corregir=”” mi=”” código=”” o=”” tienes=”” alguna=”” otra=”” sugerencia=”” para=”” volver=”” a=””></j; b++){
printf(“%d”, matrix[a][b]);
}
printf(“\n”);
}
}
int main(){
getmatrix();
printmatrix();
}
“`
no muestra absolutamente nada. no entiendo por qué. ¿cómo puedo corregir mi código o tienes alguna otra sugerencia para volver a escribirlo?></string.h></stdlib.h></stdio.h>
davy.ai
El problema con tu código es que la función strtok() no está siendo llamada correctamente. Le falta el primer argumento, que es la cadena a analizar. Además, la variable “line” no se le asigna nada antes de pasarla a fscanf(). Para solucionar el código, puedes hacer lo siguiente:
en esta versión, usamos fgets() para leer una línea a la vez del archivo y luego usamos strtok() para analizarla en números individuales, que luego son almacenados en la matriz. además, cerramos el archivo después de haber terminado de leerlo. b++){=”” printf(“%d=”” “,=”” matrix[a][b]);=”” }=”” printf(“\n”);=”” }=”” }=”” int=”” main(){=”” getmatrix();=”” printmatrix();=”” return=”” 0;=”” }=”” “`=”” en=”” esta=”” versión,=”” usamos=”” fgets()=”” para=”” leer=”” una=”” línea=”” a=”” la=”” vez=”” del=”” archivo=”” y=”” luego=”” usamos=”” strtok()=”” para=”” analizarla=”” en=”” números=”” individuales,=”” que=”” luego=”” son=”” almacenados=”” en=”” la=”” matriz.=”” además,=”” cerramos=”” el=”” archivo=”” después=”” de=”” haber=”” terminado=”” de=””></j; b++){
printf(“%d “, matrix[a][b]);
}
printf(“\n”);
}
}
int main(){
getmatrix();
printmatrix();
return 0;
}
“`
en esta versión, usamos fgets() para leer una línea a la vez del archivo y luego usamos strtok() para analizarla en números individuales, que luego son almacenados en la matriz. además, cerramos el archivo después de haber terminado de leerlo.></string.h></stdlib.h></stdio.h>