Comment afficher une ligne apartir d'un fichier?

Résolu/Fermé
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - Modifié par asstel le 28/03/2014 à 17:38
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 31 mars 2014 à 16:39
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







A voir également:

4 réponses

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 28/03/2014 à 20:29
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 :

    /* (...) */
    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
1
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
Modifié par asstel le 28/03/2014 à 20:37
j'ai pas vraiment comprie
mais je vais essayé merciii :)
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
28 mars 2014 à 20:37
pouvez vous m'expliquer? svp
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
Modifié par asstel le 28/03/2014 à 20:50
ça marche :D explique moi svp
%49[^\n] veux dire quoi?

merciiiiiiiiiiiiii :)
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
31 mars 2014 à 10:23
Salut asstel,

http://www.cplusplus.com/reference/cstdio/scanf/

A format specifier for scanf follows this prototype:

%[*][width][length]specifier

Where the specifier character at the end is the most significant component, since it defines which characters are extracted, their interpretation and the type of its corresponding argument:

(...)

[^characters] Negated scanset Any number of characters none of them specified as characters between the brackets.

Donc
%49[^\n]
signifie : prends jusqu'à 49 caractères dans le flux, qui ne soient pas
'\n'
(le retour à la ligne).


Dal
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
31 mars 2014 à 16:39
okkk merciiii infiniment :D
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
28 mars 2014 à 17:38
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;
}
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
28 mars 2014 à 18:00
il n y a pas une solution pour lire ligne par ligne.??
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
28 mars 2014 à 20:03
j'ai essayé
fgets
mais un autre probleme se pose
0