J'ai un fichier appelé input1.txt, qui est une matrice de chiffres et de lettres.J'essaie de lire et de le stocker dans un tableau 2D de sorte que chaque charte soit de 1 cellule. Voici mon fichier texte:Lecture d'un fichier dans un tableau 2D
1111S11110
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
0000E01110
Et voici mon code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Function for finding the array length
int numOfLines(FILE *const mazeFile){
int c, count;
count = 0;
for(;;){
c = fgetc(mazeFile);
if(c == EOF || c == '\n')
break;
++count;
}
return count;
}
// Main Function
int main(int argc, char **argv)
{
// Opening the Matrix File
FILE *mazeFile;
mazeFile = fopen("input1.txt", "r");
if(mazeFile == NULL)
return 1;
int matrixSize = numOfLines(mazeFile);
// Reading text file into 2D array
int i,j;
char mazeArray [matrixSize][matrixSize];
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
fscanf(mazeFile,"%c", &mazeArray[i][j]);
}
}
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
printf("%c",mazeArray[i][j]);
}
}
fclose(mazeFile);
return 0;
}
Cependant ma sortie de la console est comme ça quand je les imprimer:
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
[email protected]
On peut dire qu'elle ne lit pas la 1ère ligne, Cependant en termes d'index, je pense que c'est ok.Je suis nouveau à C.Could n'importe qui s'il vous plaît aider.Merci à l'avance.
votre 'numOfLines' est un abus de langage, il compte le nombre de caractères dans la première ligne. Et donc, les lit! Pourquoi pensez-vous que si vous continuez à lire, vous recommencez depuis le début? la magie? Essayez ['rewind()'] (https://linux.die.net/man/3/rewind). –
Votre fonction 'numOfLines()' lit le fichier jusqu'à la fin. Si vous voulez le relire, vous devez revenir au début (ce qui est possible pour les fichiers ordinaires, mais pas pour d'autres types de flux possibles). –
@JohnBollinger il ** ne lit pas ** à la fin, ce qui ajoute à la confusion dans ce code ... –