Problème de lecture a partir d'un fichier. [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
28 janvier 2011
-
strix-dev
Messages postés
9
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
28 janvier 2011
-
Salut!
je veux faire un programme qui stock une chaine de caractère dans un fichier, et puis le lire et l'afficher dans l'écran. Mais quand j'exécute le programme, il m'affiche juste le 1er mot, par exemple quant j'entre "Aide moi" il m'affiche juste "Aide".
Voila le Code source:


#include <stdio.h>
#include <stdlib.h>

int main()
{
    char t[30];
    FILE *f;
    f=fopen("savegarde.txt", "w");
    printf("Donner un mot:");
    gets(t);
    fprintf(f,"%s", t);
    fclose(f);
    f=fopen("savegarde.txt", "r");

    fscanf(f,"%s", t);
    printf("%s", t);

    fclose(f);

    return 0;
}




Merci
Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1376
C'est parce que fscanf() s'arrête quand il y a un espace.
Utilise fread() avec la taille de la chaine pour tout lire.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char t[30];
    FILE *f;
    int size;

    f=fopen("savegarde.txt", "w");
    printf("Donner un mot:");
    gets(t);
    fprintf(f,"%s", t);
    fclose(f);
    size = strlen(t);
    f=fopen("savegarde.txt", "r");

    fread(t, size, 1, f);
    printf("%s", t);

    fclose(f);

    return 0;
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63157 internautes nous ont dit merci ce mois-ci

strix-dev
Messages postés
9
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
28 janvier 2011

Merci. It's work ;)
Messages postés
225
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
20
Il me semble qu'un char n'apprécie guère les espaces. Tout simplement.
strix-dev
Messages postés
9
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
28 janvier 2011

Alors comment resoudre le probleme?
Messages postés
225
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
20
Tu peux, soit créer une file de caractère (non pas un char, mais bien une file). Je ne connais que les codes pour faire de l'objet pour faire ça, je suis un informaticien encore à ses débuts.
Soit, la solution de facilité serai de ne pas mettre un espace et commencer chaque mot par un espace. ex : "aide moi" devient "AideMoi".
Tu peux encore créer une nouvelle chaine de caractère pour chaque mot et les afficher en plaçant des arguments.
(Si un VRAI pro passe par ici et vois que je dis n'importe quoi qu'il m'arrête tout de suite ^^)