Connaitre le nombre de valeurs dans un fichier

Résolu
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 13 sept. 2005 à 15:29
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 14 sept. 2005 à 14:18
Salut,
J'ai en fait deux petits problèmes que je n'arrive pas à résoudre. Je voudrais ouvrir un fichier contenant uniquement des valeurs et en connaître le nombre de valeurs que contient mon fichier. J'ai essayé de bricoler quelques choses en C mais ça ne marche pas. Si quelqu'un peut m'aider.

unsigned long int j;
double val[100]; //variable pour stocker les valeurs du fichier
int a; //nombre de valeurs contenues ds fichier
int i;
FILE *fichier;
fichier=fopen("valeur.txt","r");

while(1){
fscanf(fichier, "%d", &val[j]);
j++;
a=j++;
if (feof(fichier)) break;
}
...
et là ça compile mais ça plante.

Jarod_Delaware

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
13 sept. 2005 à 16:41
Il reste le problème de la double incrémentation de j. de plus du fait un printf après l'incrémentation => tu affiche n'importe quoi.
Corrrection (non testée mais devrait être proche).

#include <stdio.h>
#include <stdlib.h>

int main()
{
int val[100];
int j = 0;
FILE *fichier;
fichier=fopen("valeur.txt","r");
while(!feof(fichier) && j < 100)
{
fscanf(fichier, "%d", &val[j]); // tester fscanf(fichier, "%d\n", &val[j]); si une valeur par ligne dans le fichier
printf("%d\n",val[j]);
j++;
}
fclose(fichier);
printf("\n%d\n",j); //affiche le nombre valeurs contenu ds fichier
system("PAUSE");
return 0;
}
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
13 sept. 2005 à 16:03
1- En mettant le format du fichier ce serait plus facile te d'aider.
2- Pour lire des double c'est "%lf".
3- Tu incrémente 2 fois j par boucle.
4- Il n'y a pas de protection de dépassement du tableau.
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
13 sept. 2005 à 16:15
Salut ymca2003,
mon fichier doit contenir uniquement des entiers compris entre 0 et 10. Mais ce que je ne comprends pas c'est pourquoi ça me donne rien. J'ai essayé de déclarer val en int, j'ai egalement essayé fscanf(fichier, "%lf", &val[j]); mais ca foire également.
Est ce que tu pourrais m'aider svp.

Jarod_Delaware
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
13 sept. 2005 à 16:17
Ah oui, les variables ne sont pas initialisées (j entre autre).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
13 sept. 2005 à 16:33
en fait, voila le code en entier. Par contre c'est vrai j'ai oublié d'initialiser j et a, cependant ça me donne toujours n'importe quoi. Par contre pour connaître le nombre de valeurs contenues dans mon fichier est ce que c'est correct ce que j'ai marqué?
Merci pour ton aide.

#include <stdio.h>
#include <stdlib.h>
double val[100];
int a;
int j;
FILE *fichier;
fichier=fopen("valeur.txt","r");

j=0;
a=0;
while(1){
fscanf(fichier, "%lf", &val[j]);
j++;
a=j++;
if (feof(fichier)) break;
printf("\n%lf",val[j]);
}
fclose(fichier);
printf("\n%d\n",a); //affiche le nombre valeurs contenu ds fichier


system("PAUSE");
return 0;
}
Jarod_Delaware
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
14 sept. 2005 à 14:18
Merci ymca2003. Ca marche impeccable ! Encore merci pour ton aide.

Jarod_Delaware
0
Rejoignez-nous