Manipulation de fichiers en c
renaudh
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
BBSOLAR -
BBSOLAR -
Bonjour,
Toujours dans le cadre de mon puissance 4, je dois créer un fichier avec le top 10 des meilleurs joueurs.
Pour le moment, ce top10 est rangé dans un vecteur de type structuré.
donc la variable structurée s'appelle top10, top[t].top10nom représente le nom du meilleur joueur et top[t].top10tent représente le nombre de tentatives pour gagner.
Donc j'aimerais avoir une fonction qui efface le fichier, une qui écrit les données dans le fichier et une qui lit le fichier.
Je sais bien que je demande beaucoup mais je n'ai jamais manipulé de fichier en c et cela n'a pas été vu au cours donc j'ai vraiment besoin d'aide.
Merci
Toujours dans le cadre de mon puissance 4, je dois créer un fichier avec le top 10 des meilleurs joueurs.
Pour le moment, ce top10 est rangé dans un vecteur de type structuré.
struct top10 { char top10nom[M]; int top10tent; };struct top10 top[T];
donc la variable structurée s'appelle top10, top[t].top10nom représente le nom du meilleur joueur et top[t].top10tent représente le nombre de tentatives pour gagner.
Donc j'aimerais avoir une fonction qui efface le fichier, une qui écrit les données dans le fichier et une qui lit le fichier.
Je sais bien que je demande beaucoup mais je n'ai jamais manipulé de fichier en c et cela n'a pas été vu au cours donc j'ai vraiment besoin d'aide.
Merci
A voir également:
- Manipulation de fichiers en c
- Renommer des fichiers en masse - Guide
- Explorateur de fichiers - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide
12 réponses
j'ai un probleme comment creer un fichier(les fichiers en c) et fait une adresse pour l'ouvrir en une page excel pour afficher un tableau et les indices de ce tableau sont des indices du programme et merci
<et fait une adresse pour l'ouvrir en une> ????
<les indices de ce tableau sont des indices du programme> ????
Je ne comprend pas bien la différence entre indice et adresse
sous excell on peut exporter une feuille en format texte et choisir son formatage abscisse ordonnées avec des caractères de ponctuation comme ; , .
Il y a un problème grammatical dans la formulation de la question ci-dessus qui empêche de comprendre son sens.
Je sais bien que la méthode globale a fait des dégâts, mais ça ne coute rien de relire ce que l on a écrit.
<les indices de ce tableau sont des indices du programme> ????
Je ne comprend pas bien la différence entre indice et adresse
sous excell on peut exporter une feuille en format texte et choisir son formatage abscisse ordonnées avec des caractères de ponctuation comme ; , .
Il y a un problème grammatical dans la formulation de la question ci-dessus qui empêche de comprendre son sens.
Je sais bien que la méthode globale a fait des dégâts, mais ça ne coute rien de relire ce que l on a écrit.
j'ai un probleme!!!!comment travailler avec la librairie time.h.... j'ai un travail de trie(rapide,insertion et selection)en c avec les llc et de musuré le temps qui s'écoule dans le trie ...je demande pour m'aider pour travailler avec time.h des exemples de code sourses sur le time.h avec une explication......et une explication sur le travail de trie rapide avec un dessin svp........
la plupart du temps, apprendre à programmer est une démarche personnelle.
mais la plupart des environements de programmation est documentée par mot clés, et comme il arrive qu'on ne connaisse pas le nom de ce que l on cherche, voici quelques tuyaux:
pour l'ouverture et la ferme ture de fichiers voir :
pour le chargement et la sauvegarde de variables sous forme de structure voir :
cordialement
mais la plupart des environements de programmation est documentée par mot clés, et comme il arrive qu'on ne connaisse pas le nom de ce que l on cherche, voici quelques tuyaux:
pour l'ouverture et la ferme ture de fichiers voir :
fopen; fclose
pour le chargement et la sauvegarde de variables sous forme de structure voir :
fread; fwrite
cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je dois passer une structure à fwrite, j'ai écrit cette fonction:
Pas d'erreurs, le programme se lance, je fais une partie mais le programme se ferme dès que la partie est gagnée, que dois-je corriger?
void ajoutfichier (void) { FILE *file=fopen("E:\Puissance 4\Puissance 4\top10.txt","w"); if (file == NULL) { fprintf(stderr,"Erreur dans l'ouverture du fichier"); exit(-1); } fwrite(top,sizeof(top10),20,file); fclose(file); }
Pas d'erreurs, le programme se lance, je fais une partie mais le programme se ferme dès que la partie est gagnée, que dois-je corriger?
On me dit de déclarer fopen, voilà à quoi j'arrive:
Ca donne plein d'erreurs et j'ai vraiment du mal à comprendre le fonctionnement de chaque fonction.
void ajoutfichier (void) { FILE * fopen(const char *top10, char *mode); int fclose(FILE *flot); FILE *fichtop10; char *mem = (char *)malloc(SIZE); int length; fichtop10=fopen("top10.txt","w"); if (fichtop10 == NULL) { fprintf(stderr,"Erreur dans l'ouverture du fichier"); exit(-1); } size_t fwrite(void *top, size_t 55, size_t 10, FILE *fichtop10); fwrite(mem,20,length,top); fclose(fichtop10); }
Ca donne plein d'erreurs et j'ai vraiment du mal à comprendre le fonctionnement de chaque fonction.
bonjour
si le fichier ne peut pas etre modifié
(cdrom, réseau en lecture seule ou autre)
ou bien que le chemin est incorrect,
alors file a pour valeur NULL
et la commande
a priori je ne peux pas en dire plus
sinon, voilà une petite modif
un truc important aussi dans fopen , "w" remplace le fichier
existant, alors que "a" permet de rajouter au fichier sans rien effacer
mais ça dépend de ce que tu veux faire.
bon courage
A+
si le fichier ne peut pas etre modifié
(cdrom, réseau en lecture seule ou autre)
ou bien que le chemin est incorrect,
alors file a pour valeur NULL
et la commande
exit (-1)fait quitter le programme
a priori je ne peux pas en dire plus
sinon, voilà une petite modif
void ajoutfichier (void) { FILE *file=fopen("E:\Puissance 4\Puissance 4\top10.txt","w"); if (file == NULL) { fprintf(stderr,"Erreur dans l'ouverture du fichier"); } else /* seulement si le fichier est ouvert*/ { /* taille de la structure top, 1 element */ fwrite(top,sizeof(top),1,file); fclose(file); } }
un truc important aussi dans fopen , "w" remplace le fichier
existant, alors que "a" permet de rajouter au fichier sans rien effacer
mais ça dépend de ce que tu veux faire.
bon courage
A+
Je viens de modifier et j'obtiens:
Pour plus de facilités, il remplacera à chaque fois le fichier et il lui repasse à chaque appel de la fonction tout le vecteur déclarée depuis une structure.
Après exécution du programme et avoir gagner une partie, le fichier est toujours vide donc il n'écrit pas dedans.
void ajoutfichier (void) { FILE *fichtop10; fichtop10=fopen("top10.txt","w"); if (fichtop10 == NULL) { fprintf(stderr,"Erreur dans l'ouverture du fichier"); exit(-1); } else fwrite(top,sizeof(top10),T,fichtop10); fclose(fichtop10); }
Pour plus de facilités, il remplacera à chaque fois le fichier et il lui repasse à chaque appel de la fonction tout le vecteur déclarée depuis une structure.
Après exécution du programme et avoir gagner une partie, le fichier est toujours vide donc il n'écrit pas dedans.
J'ai supprimé le exit(-1) mais ça ne change rien.
Comme ceci:
void ajoutfichier (void)
{
FILE *fichtop10;
fichtop10=fopen("top10.txt","w");
if (fichtop10 == NULL)
fprintf(stderr,"Erreur dans l'ouverture du fichier");
else
fwrite(top,sizeof(top10),T,fichtop10);
fclose(fichtop10);
}
Comme ceci:
void ajoutfichier (void)
{
FILE *fichtop10;
fichtop10=fopen("top10.txt","w");
if (fichtop10 == NULL)
fprintf(stderr,"Erreur dans l'ouverture du fichier");
else
fwrite(top,sizeof(top10),T,fichtop10);
fclose(fichtop10);
}
Non rien ne s'affiche. Le programme se lance et tout va parfaitement mais le fichier texte avec le top10 ne se crée pas.
La fonction d'écriture est:
Fonction de lecture:
La structure est déclarée en globale car je l'utilise dans beaucoup de fonctions:
Le T est défini est défini en globale car utilisé plusieurs fois aussi:
La fonction d'écriture est:
void ajoutfichier (void) { FILE *fichtop10; fichtop10=fopen("top10.txt","w"); if (fichtop10 == NULL) fprintf(stderr,"Erreur dans l'ouverture du fichier"); else { fwrite(top,sizeof(top10),T,fichtop10); fclose(fichtop10); } }
Fonction de lecture:
void affichetop10 (void) { FILE *fichtop10; fichtop10=fopen("top10.txt","r"); if (fichtop10 == NULL) fprintf(stderr,"Erreur dans l'ouverture du fichier"); else { fwrite(top,sizeof(top10),T,fichtop10); fclose(fichtop10); } }
La structure est déclarée en globale car je l'utilise dans beaucoup de fonctions:
struct top10 { char top10nom[M]; int top10tent; };struct top10 top[T];
Le T est défini est défini en globale car utilisé plusieurs fois aussi:
#define T 10
Dsl pour la ptite erreur mais g bien mis un fread au lieu d'un fwrite dans la fonction "affichetop10" sinon, ya un gros problème à l'école vu que quand je l'exécute à l'école, il crée pas le fichier et chez moi, il le crée.
Le vecteur "top10nom" passe bien mais pas celui pour les tentatives, j'obtiens cela dans mon fichier:
Et quand je veux afficher le top10, il ne m'affiche rien.
Le vecteur "top10nom" passe bien mais pas celui pour les tentatives, j'obtiens cela dans mon fichier:
reno ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
Et quand je veux afficher le top10, il ne m'affiche rien.