Problème de lecture a partir d'un fichier.

Résolu/Fermé
strix-dev Messages postés 9 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 28 janvier 2011 - 28 janv. 2011 à 00:02
strix-dev Messages postés 9 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 28 janvier 2011 - 28 janv. 2011 à 01:58
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
A voir également:

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
28 janv. 2011 à 00:51
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
strix-dev Messages postés 9 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 01:58
Merci. It's work ;)
0
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 29
28 janv. 2011 à 00:04
Il me semble qu'un char n'apprécie guère les espaces. Tout simplement.
0
strix-dev Messages postés 9 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 00:05
Alors comment resoudre le probleme?
0
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 29
28 janv. 2011 à 00:10
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 ^^)
0