J'ai suivi vos conseils, et est donc le code suivant :
int main(int argc, char *argv[])
{
int grille[11][11],i=0,j=0,m=0;
char caractereActuel;
for (i=0;i<=10;i++)
{
for (j=0;j<=10;j++)
{
grille[i][j]=0;
}
}
if (fichier != NULL)
{
do
{
for(j=0;j<=5;j++)
{
caractereActuel= fgetc(fichier); // On lit le caractère
m=caractereActuel-'0';
printf("i = %d, j = %d, m = %d \n",i,j,m);
//sprintf(intermediaire,"%c",caractereActuel);
if (m==-38) //Si l'entier est un retour à la ligne, on change de ligne
{
i++;
}
else //Si non, on l'écrit a sa place dans la matrice
{
grille[i][j]=m;
}
}
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(fichier); // On ferme le fichier qui a été ouvert
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier test.txt");
}
printf("\nAffichage de la matrice ... \n");
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
printf("%d ",grille[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
Qui fontionne bien comme il faut :) Je me suis pris la tete avec atoi(), mais je n'en ai visiblement pas besoin :)
Aussi, je n'avais pas réaliser que je liser les caracteres colones par colones, et non ligne par ligne. Je règle ce problème en bouclant sur j, et non sur i.
Est ce que ce code est potable, ou alors je peut l'améliorer ? Je pense notamment au changement de ligne ... vous auriez fait comme moi ? ou autrement ?
# Code bon :)
Posté par Calve . En réponse au message Mettre un fichier dans une matrice. Évalué à 5.
int main(int argc, char *argv[])
{
int grille[11][11],i=0,j=0,m=0;
char caractereActuel;
for (i=0;i<=10;i++)
{
for (j=0;j<=10;j++)
{
grille[i][j]=0;
}
}
FILE* fichier = NULL;
//Réinitialisation des variables
i=0;
j=0;
fichier = fopen("fichieraouvrir", "r+");
if (fichier != NULL)
{
do
{
for(j=0;j<=5;j++)
{
caractereActuel= fgetc(fichier); // On lit le caractère
m=caractereActuel-'0';
printf("i = %d, j = %d, m = %d \n",i,j,m);
//sprintf(intermediaire,"%c",caractereActuel);
if (m==-38) //Si l'entier est un retour à la ligne, on change de ligne
{
i++;
}
else //Si non, on l'écrit a sa place dans la matrice
{
grille[i][j]=m;
}
}
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(fichier); // On ferme le fichier qui a été ouvert
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier test.txt");
}
printf("\nAffichage de la matrice ... \n");
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
printf("%d ",grille[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
Qui fontionne bien comme il faut :) Je me suis pris la tete avec atoi(), mais je n'en ai visiblement pas besoin :)
Aussi, je n'avais pas réaliser que je liser les caracteres colones par colones, et non ligne par ligne. Je règle ce problème en bouclant sur j, et non sur i.
Est ce que ce code est potable, ou alors je peut l'améliorer ? Je pense notamment au changement de ligne ... vous auriez fait comme moi ? ou autrement ?
Merci de votre aide en tout cas :)