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

Résolu
strix-dev Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
strix-dev Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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   Statut Membre Dernière intervention  
 
Merci. It's work ;)
0
Leinox Messages postés 227 Date d'inscription   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention  
 
Alors comment resoudre le probleme?
0
Leinox Messages postés 227 Date d'inscription   Statut Membre Dernière intervention   29
 
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