Fopen -> CreateFile...

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 5 juin 2004 à 01:04
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 5 juin 2004 à 12:45
Bonjour,

Voila, alors j'ai pas mal cherché une API ki permettait de recuperer une ligne dans un fichier (<=> fgets) mais je n'ai rien trouvé...Donc j'ai opté pour une utilisation de fopen, fgets mais jmré savoir utiliser les API windows, donc si kelkun pouvait me "traduire" la fonction suivante avec les API...Merci d'avance a la personne ki me fera ca !

int iRecupInfoFile()
{
FILE *fInfo;
char sBuffer[64];
int i = 0;

fInfo = fopen("pp.opt", "r");

for ( ; i < 3 && !feof(fInfo); ++i) {
fgets(sBuffer, 40, fInfo);
if (!i) {
strncpy(sPop, sBuffer, strlen(sBuffer) - 1);
} else {
strncpy(sCmd[i - 1], sBuffer, strlen(sBuffer) - 1);
strcat(sCmd[i - 1], "\r\n");
}
}

fclose(fInfo);
return TRUE;
}

Jpense pas ke ca devrait etre compliké...Sinon, j'ai une kestion, pour verifier l'existence d'un fichier, j'utilise CreateFile mais ai entendu parler d'une API pathexist ou FileExists, si kelkun pouvait me renseigner sur ce point oci...

Merci bocou d'avance !

++

Alhexman

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2004 à 10:45
Il n'y a effectivement pas de rapport entre le fait qu'on ne puisse pas ouvrir un fichier et sa non existence. Exemple: si un autre prog l'a ouvert en mode exclusif, tu ne pourras pas l'ouvrir et pourtant il existe.
Ceci va bon a tout coup:
if(GetFileAttributes(szfile) & 0x80000000) ABSENT

Pour ta func iRecupInfoFile(), pas de code svp mais donne plutot le but a obtenir.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
5 juin 2004 à 10:49
BruNews> D'ou tu trouves toute ces constantes (0x80000000) ???
Ca correspond a quoi exactement ?
Ya t'il une autre maniere de l"ecrire ?
Du genre :
if(GetFileAttributes(szFile) & GFA_FILEEXISTS) ....

Puis il manque pas un "&" ???

Samir
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
5 juin 2004 à 10:54
Ma fonction iRecupInfoFile() sert a recuperer 3 lignes ds un fichier, et stocke les lignes une à une ds des variable de type char *...Voila, merci pour le GetFileAttributes...

++

Alhexman
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2004 à 11:29
DWORD d;
char *pmem;
HANDLE hfl = CreateFile(...); pour ouvrir
pmem = (char*) HeapAlloc(GetProcessHeap(), 0, 4096);
d = 0; ReadFile(hfl, pmem, 4095, &d, 0); // 1 de moins
CloseHandle(hfl);
if(!d) goto relMem;
pmem[d] = 0; // ici tu as une chaine "C"

A ce point je te laisse mettre 2 pointeurs sur la chaine pour detailler les lignes, ok ?

relMem: HeapFree(GetProcessHeap(), 0, pmem);

ciao...
BruNews, Admin CS, MVP Visual C++
0

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

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
5 juin 2004 à 12:42
Merci pour le remodelage de ma fonction mai par contre, la fonction GetFileAttributes n'est pas reconnu par le compilo (VC.net) j'ai pourtant inclus windows.h (comme precisé ds msdn)...J'ai le mm pb avec l'API FileExists...
Vraiment merci de passer autant de temps a repondre a mes kestion, merci bocou...

++

Alhexman
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juin 2004 à 12:45
ben faudrait reposer VS alors parce que tout ceci sort de kernel32 donc #include <windows.h> doit suffire.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous