begin process at 2012 05 30 03:26:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

lire les lignes avec ReadFile


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lire les lignes avec ReadFile

mercredi 25 août 2004 à 17:14:49 | lire les lignes avec ReadFile

malik7934

Hello,

Je suis peut-être grave de chez grave, mais j'ai pas pigé comment lire une ligne précise d'un fichier avec ReadFile. Vu les commentaires sur le forum, c'est tellement basique que personne ne l'explique, mais moi je suis tout paumé du coup!

J'ai un fichier texte contenant 3 lignes. 2 lignes avec un chiffre de l'ordre de 2^512 et une avec un chiffre en binaire (80 bits).

Je veux les récupérer en char pour les traiter. Je suis sous VC6 dans win32, donc pas de fonction du type fgets...

Mais comme il paraît que ReadFile peut le faire, je n'ai qu'un mot à dire: HELP!

Thanx, Malik7934
mercredi 25 août 2004 à 17:27:54 | Re : lire les lignes avec ReadFile

BruNews

Administrateur CodeS-SourceS
Aspire dans un buffer avec ReadFile.
Pose un pointeur sur debut de buffer et avance le jusqu'au saut de ligne.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 25 août 2004 à 17:30:40 | Re : lire les lignes avec ReadFile

malik7934

Hoi!

Ben en fait je viens de tomber sur une de tes sources ... EM_GETLINE!

Thanx, Malik7934
mercredi 25 août 2004 à 17:42:05 | Re : lire les lignes avec ReadFile

BruNews

Administrateur CodeS-SourceS
C'est pour lire une ligne d'un EDIT, pas d'un fichier.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 25 août 2004 à 17:44:45 | Re : lire les lignes avec ReadFile

malik7934

oops...

alors je retourne au turbin! Ceci dit, ça m'oblige à utiliser fgetc... et mon prog est pas copain avec ça (il a ses humeurs ;o))

Thanx, Malik7934
mercredi 25 août 2004 à 17:52:33 | Re : lire les lignes avec ReadFile

BruNews

Administrateur CodeS-SourceS
Que vient faire fgetc dans cette galere ?
ReadFile ira beaucoup plus vite.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 25 août 2004 à 17:59:25 | Re : lire les lignes avec ReadFile

malik7934

Alors je te dis: cf ma question du début!

A un moment, je lis un fichier que je stocke dans un buffer:


//Création du buffer pour lire le fichier source
dwFileSize = GetFileSize(hSrcFile,NULL) + 1;
szData = new char[dwFileSize];

//Lire le fichier source
if(!ReadFile(hSrcFile,szData,dwFileSize,&dwO,0))
{
delete[] szSrc;
delete[] szData;
CloseHandle(hSrcFile);
CloseHandle(hDestFile);
return FALSE;
}


char* szData est donc la copie du fichier lu (ou alors j'ai rien pigé). Maintenant je veux récupérer une à une les lignes... ben je pige pas.

Je voulais essayer un truc du genre
do{
c = fgetc(szData);
szSrc[x]=c;
x++;}
while ((c != '\n') && (c !='\r'))
Mais visiblement je suis trop une pine en C!
mercredi 25 août 2004 à 18:25:12 | Re : lire les lignes avec ReadFile

BruNews

Administrateur CodeS-SourceS
char *c, *d, *pout;
DWORD d;

dwFileSize = GetFileSize(hSrcFile,NULL);
szData = new char[dwFileSize + 1];

d = 0; ReadFile(hSrcFile,szData,dwFileSize,&d,0);
CloseHandle(hSrcFile);
if(d != dwFileSize) ALORS MAUVAISE LECTURE, NETTOIE ET SORS.
d = szData;
pout = szData + dwFileSize;

BOUCLAGE:
c = d;
d avance jusque trouver saut ligne && < pout;
a ce moment c represente une ligne.
ON REBOUCLE.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 25 août 2004 à 18:29:08 | Re : lire les lignes avec ReadFile

malik7934

Gros merci... je vais étudier ça de suite!

Malik7934
jeudi 26 août 2004 à 09:04:13 | Re : lire les lignes avec ReadFile

malik7934

Hi!

Sorry d'insister, mais je pige pas...

Bon, les déclarations d'usage:

char *c, *d, *pout;
DWORD dw;


On attrape la taille du fichier et on crée un nouveau char[] de la même taille:

dwFileSize = GetFileSize(hSrcFile,NULL);
szData = new char[dwFileSize + 1];


On initialise d à 0 et on met dans szData le fichier qu'on a lu, puis on referme le fichier qui vient d'être lu et qui nous sert plus:

d = 0;
ReadFile(hSrcFile,szData,dwFileSize,&dw,0);
CloseHandle(hSrcFile);


Ensuite, on compare dw et dwFileSize.... Il n'y a pas de raison pour qu'ils soient identiques!!!:

if(dw != dwFileSize) ALORS MAUVAISE LECTURE, NETTOIE ET SORS.


Ensuite tu dis de mettre dans d ce qu'on a lu, puis d'initialiser pout à szData + dwFileSize... alors là, je pige pas. Char = Char + DWORD ? Ca sert à quoi?:

d = szData;
pout = szData + dwFileSize;


Ensuite tu dis de faire une boucle comme suit (si j'ai bien compris):

while ((d != "\n")&&(d<pout)){
c = d;
d++;}


Ben avec ça, lorsque je regarde ce que j'ai dans c, j'ai que des symboles biscornus, pas la première ligne de mon fichier... j'suis à la rue là...

help

1 2

Cette discussion est classée dans : fichier, lire, lignes, readfile, grave


Répondre à ce message

Sujets en rapport avec ce message

lire fichier ligne par ligne [ par mat74 ] salut a ts je voudrai savoir comment je pourrai lire un fichier lignes par lignes . par exemple une fonction qui me permerttrai de recuperer la ligne lire plusieurs lignes d'un fichier text [ par oudkaramla ] salut à tous,j'ai un problème: j'ai un fichier texte contenant quatre lignes.moi je veux lire ces quatre lignes et les stocker chacun dans une variabl lire un ligne non defini... [ par jojomillenium ] Hello! J'ai un souci, je sais pas comment faire! Je dois lire un fichier qui est généré par un autre programme, donc je ne peux pas le modifier. Dans lecture fichier et test des lignes... [ par jojomillenium ] Bonjour, J'aimerai lire un fichier qui ressemble a ca: KJ  1 3 5; I  OPL; B 12 34 78, 90; I  PPL; et ainsi de suite des lignes qui ne sont pas du meme Lire un fichier et l'afficher [ par sebastienmz ] bonjour j'ai un problème comme d'habitude mais la c'est bizzard je veux juste afficher le contenu d'un fichier .txt mais cela maffiche que les 8 premi Comment creer, crire et lire dans un fichier .txt en c++ [ par kanprog ] Salut à tous Depuis un bout de temp, j'essais de creer un fchier .txt depuis un programme en c++. j'ai tester CreateFilemoi je maitrise pas ses parame programme d'ecriture dans un fichier [ par skim13 ] Bonjour,j'ai ecris un programme qui recupere des.C et qui ecrit des lignes que jai mis dans un .txt.Ainsi je fais une liste chainé de mes differents f lire un fichier et envoyer tout les 100 octets [ par sebastienmz ] bonjour j'ai fait un programme d'administration a distance et j'ai fait une fonction pour lire un fichier et je doit envoyer tout les 100 octet lu mai Vitesse de copie [ par Roro8883 ] Bonjour à tous !Je voudrais savoir qu'elle serait la méthode la plus rapide pour effectuer une copie d'un fichier (relativement gros) :         1) Lir lire un fichier .txt [ par inconnu2nulpar ] slt, dans un fichier .txt j'ai des coordonné de point sous la forme :x1,y1x2,y2...mais je ne sait pas comment les récupéré et les mettre dans un table


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)