Comment afficher une ligne apartir d'un fichier?
Résolu
asstel
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
asstel Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
asstel Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un fichier contient des livres
je veux afficher le contenu
supposons le fichier contient:
2012
programmer en C
linkin park
2013
programmer en java
zozor
par exemple ici le titre est composé
quand je l'affiche voici le resultat que j'obtiens
code: 2012
titre: programmer
auteur: en
code:c
titre:linkin
auteur:park
mais je veux obtenir
code:2012
titre: programmer en c
auteur: linkin park
comment je fais? svp
j'ai un fichier contient des livres
je veux afficher le contenu
supposons le fichier contient:
2012
programmer en C
linkin park
2013
programmer en java
zozor
par exemple ici le titre est composé
quand je l'affiche voici le resultat que j'obtiens
code: 2012
titre: programmer
auteur: en
code:c
titre:linkin
auteur:park
mais je veux obtenir
code:2012
titre: programmer en c
auteur: linkin park
comment je fais? svp
A voir également:
- Comment afficher une ligne apartir d'un fichier?
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
Salut asstel,
le %s de scanf va effectivement s'arrêter au prochain caractère "blanc", donc à l'espace.
Pour utiliser les fonctions de la famille scanf pour lire une ligne jusqu'au retour à la ligne, tu peux cependant faire comme cela :
http://www.cplusplus.com/reference/cstdio/scanf/
ou utiliser fgets, qui est fait pour cela, en retirant le '\n' qu'il capturera.
Dal
le %s de scanf va effectivement s'arrêter au prochain caractère "blanc", donc à l'espace.
Pour utiliser les fonctions de la famille scanf pour lire une ligne jusqu'au retour à la ligne, tu peux cependant faire comme cela :
/* (...) */ char c; if (scanf("%49[^\n]",livre.titre) == 1) { printf("J'ai récupéré : [%s]\n", livre.titre); c = getchar(); /* purger '\n' */ }
http://www.cplusplus.com/reference/cstdio/scanf/
ou utiliser fgets, qui est fait pour cela, en retirant le '\n' qu'il capturera.
Dal
voici le code:
#include <stdio.h> #include <stdlib.h> typedef struct Livre Livre; struct Livre { char code[15]; char titre[50]; char Auteur[50]; }; void Affich_Livre () { FILE* f=NULL; Livre livre;; f=fopen("FLivre.txt","r"); rewind(f); while(!feof(f)){ fscanf(f,"%s\n%s\n%s\n",livre.code,livre.titre,livre.Auteur); printf("CODE:%s\n",livre.code); printf("TITRE\t:%s\n",livre.titre); printf("L'AUTEUR\t:%s\n",livre.Auteur); } fclose(f); }; int main() { Affich_Livre(); return 0; }
mais je vais essayé merciii :)
%49[^\n] veux dire quoi?
merciiiiiiiiiiiiii :)
http://www.cplusplus.com/reference/cstdio/scanf/
A format specifier for scanf follows this prototype:
Donc signifie : prends jusqu'à 49 caractères dans le flux, qui ne soient pas (le retour à la ligne).
Dal