Merci pour votre aide si précieuse.
J'ai fait des tests d'ouverture mais j'ai juste affiché le fragment de code qui me pose problème.
En fait je veux afficher chaque ligne du fichier texte et extraire chaque valeur dans un tableau.
J'ai ajouté une boucle for pour les différentes lignes du fichier et voici le code corrigé pour afficher chaque ligne du fichier.
Voici le fragment de code que j'ai modifié.
int main(void)
{
int i;
int ax[18]; // tableau des valeurs x qui correspondent aux 1ère valeurs de chaque ligne
int ay[18];
int az[18];
FILE *fichier;
// Ouverture d'un fichier et détermination de sa taille
fichier =fopen("data.txt","r");
if (fichier!=NULL)
{
for (i=0;i<18;i++)
{fscanf(fichier,"%d %d %d\n",&ax[i], &ay[i], &az[i]);
printf("%d %d %d\n",ax[i], ay[i], az[i]);
fclose(fichier);}
}
return 0;
}
Merci pour votre aide à tous!
joel76 a écrit:Plein d'erreurs dans ce code !
- Code: Tout sélectionner
int main()
{
int i;
int length=0;
int c;
int ax[18];
FILE *fichier;
// Ouverture d'un fichier et détermination de sa taille
fichier =fopen("data.txt","r");
if (fichier!=NULL)
{
while ((c=getc(fichier))!=EOF)
{
if (c=='\n')
length++;
}
}
rewind(fichier);
// copie de la 1ère colonne dans un tableau
for (i=0;i<length;i++)
{
fscanf(fichier,"%d\n",&ax[i]);
if (&ax[i]=="\n")
{
printf("%d\n",ax[i]);
fclose(fichier);
}
}
return length;
}
Si l'ouverture du fichier est correcte, tu calcules la longueur d'une ligne (on peut aller plus vite) puis tu refermes le bloc du if, ce qui fait que tu continues à travailler sur le fichier même si l'ouverture à échouer !
Tu utilises mal la longueur de la ligne, pour lire les trois nombres, il faut faire 3 fscanf.
Le test &ax[i] == "\n" n'a aucun sens et échouera toujours.
Tu ne fermes le fichier qu'a un seul endroit (d'ailleurs ici jamais ...) et tu retournes alors qu'ne pricipe on retourne 0 ou mieux EXIT_SUCCESS ou EXIT_FAILURE.
Que veux-tu faire exactement, afficher la première ligne du fichier ?
Dans ce cas tu peux faire
- Code: Tout sélectionner
int main(void)
{
int ax[18];
FILE *fichier;
// Ouverture d'un fichier et détermination de sa taille
fichier =fopen("data.txt","r");
if (fichier!=NULL)
{
fscanf(fichier,"%d %d %d\n",&ax[0], &ax[1], &ax[2]);
printf("%d %d %d\n",ax[0], ax[1], ax[2]);
fclose(fichier);
}
return 0;
}