Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 mars 2015
-
13 sept. 2005 à 15:29
Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 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.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 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;
}
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 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.
Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 mars 20152 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.
Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 mars 20152 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