EOF avec les API Windows [Résolu]

Signaler
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Bien le bonjour ami(e)s programmeurs et programmeuzes,

Je débute avec les API Windows et j'ai une classe à faire pour le manipulation de fichier (Creer, ouvrir, lire, écrire ...).

Mais je bloque pour écrire à la fin de mon fichier, en fait lorsque je l'ouvre il faudrait que tout ce que j'ecris ensuite se trouve à la fin du fichier. Voici le code de ma méthode(dsl je sais pas si il ya des balises de codes) :

int TFichier::EcrireFichier(char* octets)
{
   int wr ;
   DWORD nombreOctetTraites;
   octets = StrCat(octets,"\r\n") ; // Pour passer une ligne à chaque appel

   wr = WriteFile(Fichier, octets, StrLen(octets), &nombreOctetTraites, NULL);

   return wr ;
}

Mon problème est que je ne trouve pas la fonction qui me permet de me placer à la fin du fichier lors de son ouverture.
Pourriez vous m'aider svp ?

PS : Fichier est de type HANDLE

Merci d'avance.

8 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
fregolo52 >
forpen, fread, ... n'a rien de "couche basse".
Quand tu compiles pour Windows, c'est par force traduit par la libc en CreateFile, ReadFile,... A moins d'utiliser l'API native, l'API user mode est l'unique moyen (et de loin le plus rapide) de communiquer avec les périphériques.

ciao...
BruNews, MVP VC++
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
SetEndOfFile devrait t'aider.

Perso, j'utilise plutot fopen, fread, fwrite, fseek ... (l'habitude du développement couche basse, windows et linux)
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
7 mars 2011

bonjour,
le but si g bien compris est d'écrire à la fin d'un fichier. donc déja commence par créer un autre fichier tempo.
fais un parcours de ton fichier en cours et écris ce que tu récupére dans le fichier tempo. normalement on
a while (!eof(file)) qui permet d'aller jusqu'a la fin . aprés tu rajoute ce que tu veux au fichier tempo. supprime le fichier source et renome le fichier tempo avec le nom du fichier source .
boncourage
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Fregolo52 : SetEndOfFile j'ai essayé au début avant de comprendre que ça servait initialisée la fin du fichier (d'apres ma trad' perso XD), moi aussi je préfère utilise fstream, mais la c'est pour un cours sur les API ^^, merci quand même.

Neone : c'est ce que j'avais pensé faire, mais pour cela il faut que je rédige et utilise une méthode LireFichier, or mon prof nous à dit qu'il y avait une fonction pour ça ^^. Je vais attendre d'autres réponses mais si je ne trouve pas c'est cette solution que j'utiliserais ^^ merci.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Sinon il te reste à faire un ReadFile et de concaténer le résultat avec ton paramètre et faire un WriteFile. C'est bourin, mais ça doit être faisable si le fichier est de taille raisonnable.
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Merci beaucoup c'est exactement ce dont j'ai besoin ^^
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Mon prof nous fait faire ces exos sur les fichiers dans l'optique d'appliquer ca aux périphériques, mais je pense qu'il compte utiliser CreateFile pour cela.