underprog
Messages postés19Date d'inscriptionsamedi 7 novembre 2009StatutMembreDernière intervention16 mai 2010
-
24 mars 2010 à 19:26
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 2013
-
25 mars 2010 à 18:50
Bonjour (ou plutot bonsoir ^^)
Mon problème est simple : je veux récupérer le contenu d'un fichier (lecture en mode binaire donc aucun caractère n'est ignoré..)
Je voudrais ensuite determiner la taille de ce contenu, mais sans utiliser la variable dans laquelle j'ai stockée la taille du fichier pour effectuer l'allocation de mémoire nécessaire au stockage du contenu, ni strlen() car cette fonction s'arrête lorsqu'elle rencontre un '\0'
En fait de façon plus générale, comment determiner la taille d'une telle chaine dans le code:
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 mars 2010 à 23:05
Simple, ton problème est insoluble. C'était d'ailleurs prévisible dans l'énoncé, une "chaine" finit au 1er 0 rencontré.
Ce que tu as est un buffer contenant une suite d'octets, pas une chaine.
Dans pareil cas on peut faire comme dans les BSTR (String de VB et autres interprétés), on stocke la longueur dans les 2 ou 4 1ers octets du buffer.
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 24 mars 2010 à 19:40
(Sous Windows)
Ouvre le fichier via CreateFile Récupère la taille du fichier via GetFileSize Lis le fichier via ReadFile Ferme le fichier via CloseHandle ---
VB.NET is good ... VB6 is better
underprog
Messages postés19Date d'inscriptionsamedi 7 novembre 2009StatutMembreDernière intervention16 mai 2010 24 mars 2010 à 19:52
heu c'est pas vraiment ça ma question... ^^
Le fichier je le lis et je recupère le contenu, ca c'est pas un problème... (d'ailleurs je suis sous windows mais dans le cas present je n'utilise pas les api w32... donc pas de CreateFile, ReadFile, etc.., je passe par fseek/ftell/fread/malloc)
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 24 mars 2010 à 20:27
Pourquoi ne veux-tu pas utiliser la fonction te donnant la taille du fichier (en sachant que c'est la seule qui permettrait de résoudre ton problème) ?
---
VB.NET is good ... VB6 is better
Vous n’avez pas trouvé la réponse que vous recherchez ?
underprog
Messages postés19Date d'inscriptionsamedi 7 novembre 2009StatutMembreDernière intervention16 mai 2010 24 mars 2010 à 21:31
non ce n'est pas la seule, la preuve celle que j'utilise depuis longtemps (et en deux lignes de codes!):
fseek(pfile, 0 SEEK_END); // Curseur a la fin du fichier
fsize ftell(pfile); // position courante du curseur taille du fichier
Pourquoi ne veux-tu pas utiliser la fonction te donnant la taille du fichier (en sachant que c'est la seule qui permettrait de résoudre ton problème) ?
d'autres part je ne veux contourner, mais résoudre mon problème! ^^
En fait mon problème principal est décrit a la fin du sujet...