Extraction dans un fichier

Résolu
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007 - 22 mars 2005 à 15:19
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011 - 22 mars 2005 à 20:22
bonjour je voudrai savoir comment on utilise la fonction ReadFile pour extrait dans un texte des nom d'élève renger de cette manière :

pierre
paul
etc...

est ensuite les aficher dans une listeBox

BOOL CSupresionEleveDlg::OnInitDialog()
{
CDialog::OnInitDialog();


FILE* FichierEleve;
FichierEleve=fopen("Eleve.txt","r");


return TRUE;
}

merci bcp

5 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
22 mars 2005 à 20:22
Tu mélange absolument tout anubis ...
Si tu ouvre le fichier avec fopen() alors continue avec f*()

un FILE* est un pointeur et non un HANDLE
FILE est une structure

#include <stdio.h>

char * ptr;
char buffer[taille];
FILE * fichier;
if ( NULL !(fichier fopen(".\\fichier.txt", "rt")) )
{
do
{
/* fgets() ajoute un '\n' à la fin de chaque ligne lue */
if ( NULL != fgets( buffer, taille-1, fichier ) )
{
/* si on trouve un '\n', on le retire, le remplace par un '\0' */ if ( NULL !(ptr strchr( buffer, '\n' )) )
{
*ptr = '\0';
}
AjoutDansListBox( buffer );
}
else
{
break;
}
} while ( !feof( fichier ) );

fclose( fichier );
}

Ce n'est qu'un exemple très basic. Ne mélange pas les FILE avec HANDLE et compagnie ...
la libc sous Windows utilise l'API Windows, si tu utilise l'API Windows alors continue avec, si tu utilise la libc alors continue avec la libc mais ne mélange pas les deux :}

Avec l'API Windows, tu devrais utiliser ceci:

CreateFile() => pour ouvrire ton/tes fichier(s)
ReadFile() => pour lire dans ton/tes fichier(s)
WriteFile() => pour écrire dans ton/tes fichier(s)
CloseHandle() => pour fermer ton/tes fichier(s)
SetFilePointer() => pour te déplacer dans ton/tes fichier(s)
etc ...

~(.:: NitRic ::.)~
3
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007
22 mars 2005 à 15:21
un fichier txt g pa présisé

merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 mars 2005 à 15:33
On se moque de savoir si est text ou autre, ReadFile aspire un certain nbr d'octets dans un buffer sans aucune interprétation.

BYTE buff[512];
DWORD d;
HANDLE hfl = CreateFile(nmoFichier,....);
if(hfl == INVALID_HANDLE_VALUE) return;
d = 0; ReadFile(hfl, buff, 512, &d, 0);
CloseHandle(hfl);

buff contient à ce point d octets lus depuis le fichier.

ciao...
BruNews, MVP VC++
0
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007
22 mars 2005 à 15:39
j'ai mon algorithme mais j'arrive pas a lire le fichier en récupérant la donnée de la ligne

Algorithme :

Ouvrir le fichier en lecture
Lire le fichier en récupérant la donnée de la ligne
Ajouter le buffer à la listebox
ligne suivante
Fin fichier
Fermer fichier

Pour ajouter dans la listebox :
SendMessage(GetDlgItem(hWnd, ID_LISTEBOX), LB_ADDSTRING, 0, (LPARAM)Buffer);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anubis52100 Messages postés 44 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 22 janvier 2007
22 mars 2005 à 15:48
je suis bloqué pour la liste box maitenant:

BOOL CSupresionEleveDlg::OnInitDialog()
{
CDialog::OnInitDialog();



// TODO: Add extra initialization here


// int unsigned long bytes ;
// int unsigned long bytes2;
FILE* FichierEleve;
FichierEleve=fopen("Eleve.txt","r");


BYTE buff[512];
DWORD d;
HANDLE hfl = FichierEleve;
d=0;


ReadFile(hfl,buff,512,&d,0);
CloseHandle(hfl);


//SendMessage(GetDlgItem(


return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
0
Rejoignez-nous