Salut !
Justement, maintenant j'ai des entiers de plus de deux caractères :D
Du coup, j'attend que fgetc me renvoit 32 pour changer la colone où écrire ...
J'ai suivi ton conseil sur le -38 et le '\n' aussi, je n'avais pas pensé à ca. C'est effectivement plus lisible et compréhensible.
En revanche, j'ai un peu de mal a saisir la récupération de l'int, le test et après le cast ...
le code parlera peut etre plus :) (j'ai enlevé le "pas necessaire")
#include <stdio.h> /* Librairie d'entrée sortie */
#include <stdlib.h> /* Librairie de fonctions standard */
#define SP 32
int main(int argc, char *argv[])
{
int grille[11][11],i=0,j=0,entier=0,findefichier=0;
char caractereActuel;
//Réinitialisation de la matrice
//Réinitialisation des variables
i=0;
j=0;
fichier = fopen("fichieraouvrir", "r");
if (fichier != NULL)
{
while (findefichier==0)
{
caractereActuel= fgetc(fichier);
if (caractereActuel != EOF)
{
entier=caractereActuel-'0';
printf("i = %d, j = %d, m = %d \n",i,j,entier);
//sprintf(intermediaire,"%c",caractereActuel);
if (caractereActuel=='\n') //Si l'entier est un retour à la ligne, on change de ligne
{
i++;
j=0;
}
else if (caractereActuel == SP) //Si l'entier est un espace, on change de colone
{
j++;
}
else //Si non, on l'écrit a sa place dans la matrice
{
grille[i][j]=(10*grille[i][j])+entier;
}
}
else if (caractereActuel == EOF)
{
fclose(fichier); // On ferme le fichier qui a été ouvert
findefichier=1;
}
}
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier test.txt");
}
Mais en effet, le but n'est pas de faire un truc "super robuste", il s'agit d'un petit projet de pacman dans le cadre des cours, et ce bout de code est pour le chargement du niveau, qui est contenu dans un fichier ...
[^] # Re: Code bon :)
Posté par Calve . En réponse au message Mettre un fichier dans une matrice. Évalué à 2.
Justement, maintenant j'ai des entiers de plus de deux caractères :D
Du coup, j'attend que fgetc me renvoit 32 pour changer la colone où écrire ...
J'ai suivi ton conseil sur le -38 et le '\n' aussi, je n'avais pas pensé à ca. C'est effectivement plus lisible et compréhensible.
En revanche, j'ai un peu de mal a saisir la récupération de l'int, le test et après le cast ...
le code parlera peut etre plus :) (j'ai enlevé le "pas necessaire")
#include <stdio.h> /* Librairie d'entrée sortie */
#include <stdlib.h> /* Librairie de fonctions standard */
#define SP 32
int main(int argc, char *argv[])
{
int grille[11][11],i=0,j=0,entier=0,findefichier=0;
char caractereActuel;
//Réinitialisation de la matrice
//Réinitialisation des variables
i=0;
j=0;
fichier = fopen("fichieraouvrir", "r");
if (fichier != NULL)
{
while (findefichier==0)
{
caractereActuel= fgetc(fichier);
if (caractereActuel != EOF)
{
entier=caractereActuel-'0';
printf("i = %d, j = %d, m = %d \n",i,j,entier);
//sprintf(intermediaire,"%c",caractereActuel);
if (caractereActuel=='\n') //Si l'entier est un retour à la ligne, on change de ligne
{
i++;
j=0;
}
else if (caractereActuel == SP) //Si l'entier est un espace, on change de colone
{
j++;
}
else //Si non, on l'écrit a sa place dans la matrice
{
grille[i][j]=(10*grille[i][j])+entier;
}
}
else if (caractereActuel == EOF)
{
fclose(fichier); // On ferme le fichier qui a été ouvert
findefichier=1;
}
}
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier test.txt");
}
//Affichage de la matrice
return 0;
Ainsi, pour le fichier
0 0 2 0 0
0 1 0 0 0
0 0 25 0 0
1 0 0 3 0
0 0 0 5 0
ca me donne bien
bash-3.2$ gcc manipulationfichier.c && ./a.out
Affichage de la matrice ...
0 0 2 0 0
0 1 0 0 0
0 0 25 0 0
1 0 0 3 0
0 0 0 5 0
Mais en effet, le but n'est pas de faire un truc "super robuste", il s'agit d'un petit projet de pacman dans le cadre des cours, et ce bout de code est pour le chargement du niveau, qui est contenu dans un fichier ...
Bonne soirée