Comment afficher une ligne apartir d'un fichier?
Résolu
asstel
Messages postés
54
Statut
Membre
-
asstel Messages postés 54 Statut Membre -
asstel Messages postés 54 Statut Membre -
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