Souhaitez-vous participer à la création d'un jeu vidéo inspiré de Stardew Valley, ou le tester lorsque la version bêta sera disponible ? Remplissez notre sondage ou inscrivez-vous à notre lettre d'information (en bas de page)
1

Lire un fichier - C

le 14-02-2015 à 09:53 #
Bonjour à tous !
Voilà j'ai un problème, j'ai créé un programme qui va créer un fichier, ensuite qui va proposer de le modifier, et pour finir qui va lire son contenu dans la console.

Les deux premières étapes fonctionnent très bien mais je n'arrive pas à lire le contenu du fichier (fread_s).
Voici le code : (je vous le met en entier mais le problème ce trouve dans les lignes après le commentaire //Lecture du fichier

#include <stdlib.h>

#include <stdio.h>
#include <string.h>

#define CARACMAX 30

typedef struct programme
{
char nom[CARACMAX];
double prix;
}Programme;

void main(void)
{
Programme excel;
char nomLu[CARACMAX];
int prixLu;
FILE *ptrFichier;

//Création du fichier
fopen_s(&ptrFichier, "fichier.dat", "ab+");
if (ptrFichier == NULL)
{
puts("Plus de place");
exit(1);
}
else
{
strcpy_s(excel.nom, sizeof(excel.nom), "Excel");
excel.prix = 108.5;
}

//Modification du fichier
if (ptrFichier == NULL)
{
puts("Fichier inexistant");
}
else
{
fseek(ptrFichier, 0, SEEK_SET);
printf_s("Nom du programme : \n");
gets_s(nomLu,CARACMAX);
int tailleNom = strlen(nomLu) + 1;
fwrite(&nomLu, tailleNom*sizeof(char), tailleNom, ptrFichier);

printf_s("Prix du programme = \n");
scanf_s("%d", &prixLu);
fwrite(&prixLu, sizeof(double), 1, ptrFichier);
}

//Lecture du fichier
if (ptrFichier == NULL)
{
puts("Fichier inexistant");
}
else
{
fread_s(&excel, sizeof(Programme), sizeof(Programme), 1, ptrFichier);
}

system("pause");
}

Re: Lire un fichier - C
le 14-02-2015 à 13:22 #
Salut,

Je pense qu'il manque un rewind ou un fseek avant le fread.

Je ne peux pas tester ton programme (rien à voir avec ton code), mais les paramètres du premier fwrite me semble un peu étrange vu que ce que tu écrit est de taille tailleNom*sizeof(char)*tailleNom

www.tutorialspoint.com/c_standard_library/c_function_fwrite.htm

Ajout du 14-02-2015 à 13:44:

Encor un truc, ce que tu écris dans le fichier n'a pas la taille de sizeof(Programme). Si tu n'as pas envie d'utiliser la variable tailleNom pour la lecture, soit tu écrit quelque chose qui a toujours la même taille, soit tu utilises du sscanf ou du fscanf pour la lecture

(Modifié par Alcar le 14-02-2015 à 16:35)




Ces discussions pourraient vous intéresser également:


lire un fichier ADS sous Matlab
lire fichier ADS avec matlab
lire un fichier avec matlab
[Problème] [Perl,Tableaux] lire un fichier texte
lire un fichier xml à partir d'une animation flash?l'action script?