Recup de donnée dans un fichier en C
Résolu/Fermé
Rudyskate
-
14 févr. 2009 à 18:30
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 14 févr. 2009 à 21:36
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 14 févr. 2009 à 21:36
A voir également:
- Recup de donnée dans un fichier en C
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
- Impossible de supprimer un fichier - Guide
9 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 févr. 2009 à 18:48
14 févr. 2009 à 18:48
Re,
do
{
fscanf(v, "%s", voitvente[i].marque);
fscanf(v, "%s", voitvente[i].type);
fscanf(v, "%d", &voitvente[i].annee);
fscanf(v, "%s", &voitvente[i].motorisation);
fscanf(v, "%f", &voitvente[i].prix);
i++;
}
while ( fscanf(v,"%s %s %d %s %f",voitvente[i].marque,voitvente[i].type,&voitvente[i].annee,&voitvente[i].motorisation,&voitvente[i].prix) != EOF);
Voici comment tu dois écrire ta boucle while
do
{
fscanf(v, "%s", voitvente[i].marque);
fscanf(v, "%s", voitvente[i].type);
fscanf(v, "%d", &voitvente[i].annee);
fscanf(v, "%s", &voitvente[i].motorisation);
fscanf(v, "%f", &voitvente[i].prix);
i++;
}
while ( fscanf(v,"%s %s %d %s %f",voitvente[i].marque,voitvente[i].type,&voitvente[i].annee,&voitvente[i].motorisation,&voitvente[i].prix) != EOF);
Voici comment tu dois écrire ta boucle while
while ( fscanf(v,"%s%s%d%s%f", voitvente[i].marque,voitvente[i].type, &voitvente[i].annee,&voitvente[i].motorisation, &voitvente[i].prix) == 5) i++;
rudyskate
Messages postés
4
Date d'inscription
samedi 14 février 2009
Statut
Membre
Dernière intervention
14 février 2009
14 févr. 2009 à 20:18
14 févr. 2009 à 20:18
Ouép bah sa ne marche toujours pas, le programme saute toujours une voiture. J'impression que le i++ incrémente ou que le curseur se trouve deja a la ligne de la voiture suivante j'en sais rien...
Si le curseur se trouve a la ligne de la voiture suivante le i++ sautera celle-ci non?
Quelqu'un d'autre aurait une idée ou si t'as une autre idée ??
Au fait pourquoi on met while( ......... == 5) ?
Merci
Si le curseur se trouve a la ligne de la voiture suivante le i++ sautera celle-ci non?
Quelqu'un d'autre aurait une idée ou si t'as une autre idée ??
Au fait pourquoi on met while( ......... == 5) ?
Merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 févr. 2009 à 20:24
14 févr. 2009 à 20:24
Re,
Voici le code que j'ai utiliser
Voici le code que j'ai utiliser
#include<stdio.h> struct voitures{ char marque[50]; char type[50]; int annee; char motorisation; float prix; }; void toutaffiche(); int main() { toutaffiche(); return 0; } void toutaffiche() { struct voitures voitvente[20]; int i; int j; FILE *v=NULL; v=fopen("fic.txt","r"); i=0; while ( fscanf(v,"%s%s%d%s%f", voitvente[i].marque,voitvente[i].type, &voitvente[i].annee,&voitvente[i].motorisation, &voitvente[i].prix) == 5) i++; for (j=0;j<i;j++){ printf("%d- Voiture : %s %s\n",j,voitvente[j].marque,voitvente[j].type); printf("Annee : %d\n",voitvente[j].annee); if (voitvente[j].motorisation =='D') printf ("Motorisation : Diesel\n"); else if (voitvente[j].motorisation =='E') printf ("Motorisation : Essence\n"); printf("Prix : %6.2f Euro\n\n\n\n",voitvente[j].prix); } fclose(v); }voici le fichier de test
lami20j@debian:~/trash$ cat fic.txt Opel Ascona 1981 E 650.00 Renault Megane 1999 D 1000.00 Peugeot 308 2005 D 1500.00Voici la compilation et le résultat
lami20j@debian:~/trash$ gcc ccm_afficher.c lami20j@debian:~/trash$ ./a.out 0- Voiture : Opel Ascona Annee : 1981 Motorisation : Essence Prix : 650.00 Euro 1- Voiture : Renault Megane Annee : 1999 Motorisation : Diesel Prix : 1000.00 Euro 2- Voiture : Peugeot 308 Annee : 2005 Motorisation : Diesel Prix : 1500.00 Euro
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 févr. 2009 à 20:27
14 févr. 2009 à 20:27
Re,
Au fait pourquoi on met while( ......... == 5) ?
Puisque la fonction fscanf renvoie le nombre d'éléments mis en correspondance et assignés.
5 - c'est le nombre de champs de ta structure - le champs que tu veux renseigner.
Au fait pourquoi on met while( ......... == 5) ?
Puisque la fonction fscanf renvoie le nombre d'éléments mis en correspondance et assignés.
5 - c'est le nombre de champs de ta structure - le champs que tu veux renseigner.
rudyskate
Messages postés
4
Date d'inscription
samedi 14 février 2009
Statut
Membre
Dernière intervention
14 février 2009
14 févr. 2009 à 20:35
14 févr. 2009 à 20:35
Merci encore,je vais pouvoir continuer mon TD tranquilement en fait j'avais mis le paquet de fscanf en trop je ne vois pas pourquoi ils ne servent a rien...
Enfin tu ma débloqué , SUPER lol
Tchuss
Enfin tu ma débloqué , SUPER lol
Tchuss
rudyskate
Messages postés
4
Date d'inscription
samedi 14 février 2009
Statut
Membre
Dernière intervention
14 février 2009
14 févr. 2009 à 21:32
14 févr. 2009 à 21:32
Désolé de déranger... j'ai un autre problème :-S
Enfait j'ai une liste de 16 véhicules ce qui est pas mal non?
Puis en fait lorsque j'exécute le programme bah il m'affiche bien jusque 15 voitures ( 0 a 15) mais quand je remonte tout en haut bah cela commence de la 4eme voiture qui est coupé( j'ai l'impression de remplir la mémoire de la boite d'exécution)
Désolé de vous embêter ^^
Enfait j'ai une liste de 16 véhicules ce qui est pas mal non?
Puis en fait lorsque j'exécute le programme bah il m'affiche bien jusque 15 voitures ( 0 a 15) mais quand je remonte tout en haut bah cela commence de la 4eme voiture qui est coupé( j'ai l'impression de remplir la mémoire de la boite d'exécution)
Désolé de vous embêter ^^
rudyskate
Messages postés
4
Date d'inscription
samedi 14 février 2009
Statut
Membre
Dernière intervention
14 février 2009
14 févr. 2009 à 21:34
14 févr. 2009 à 21:34
Rectification !!!!!!
J'ai trouvé juste apres avoir demandé ^^
J'ai augmenté ma mémoire tampon de la boite d'exécution a 300 (elle était a 80 lol)
MAis merci a ceux qui auront déja cherché hihihihi
J'ai trouvé juste apres avoir demandé ^^
J'ai augmenté ma mémoire tampon de la boite d'exécution a 300 (elle était a 80 lol)
MAis merci a ceux qui auront déja cherché hihihihi
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
14 févr. 2009 à 21:36
14 févr. 2009 à 21:36
Re,
MAis merci a ceux qui auront déja cherché hihihihi
De rien ;-))
Justement j'étais en train de me demander ;-))
MAis merci a ceux qui auront déja cherché hihihihi
De rien ;-))
Justement j'étais en train de me demander ;-))