|
Bas de page | |
---|---|
Auteur | Sujet : [C] lire un fichier......mon dieu aidez moi !! |
Publicité | Posté le 01-05-2008 à 18:37:06 |
Gf4x3443 Killing perfection | 1 - aujourd'hui en 2008, ca ne sert à rien de caster les (void *) sur malloc(), à part cacher des problèmes de typage. 2 - sizeof est un opérateur de compilation, il ne pourra jamais te retourner le nombre d'éléments dans ton buffer de lecture. En l'occurence, il te retournera 4, qui est bien la taille d'un pointeur de char (une adresse 32 bits). 3 - si tu veux utiliser proprement read(), tu dois vérifier le code de retour, qui te donnera le nombre d'octets lus (si la valeur de retour est >0), 0 si tu atteins la fin de fichier (EOF), ou éventuellement -1 s'il y a une erreur. Tu peux effectivement demander de lire 256 octets, mais au final en avoir moins (si tu es à moins de 256 octets de la fin de fichier, par exemple). Message édité par Gf4x3443 le 01-05-2008 à 19:58:45 |
gilou ModérateurModzilla | freepopo, tu as des raisons particulieres pour employer open et read? tu fais du systeme de bas niveau, ou ça t'est imposé? sinon, utilises plutot fopen, fread.
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
freepopo | Merci pour vos réponse, je vais de ce pas essayer ce que vous m'avez préconiser.
|
Gf4x3443 Killing perfection |
Amha, dans ce cas, vu que c'est du P2P, tu ferais mieux de laisser tomber les fonctions f* (fread, fopen, ...). Ce sont des fonctions qui opèrent sur des streams (ce sont des fonctions stdio), et si par mégarde tu as le malheur d'oublier un fflush() quelque part, tu vas t'en bouffer les doigts (un exemple typique: des écritures bufferisées mais non flushés, qui font que tu te retrouves rapidement sur des appels à select() bloquant à l'autre bout). Edit: read() et open() n'ont pas ce problème, elles ne sont pas streamées. Pour une raison évidente, ce sont des syscalls. Message cité 1 fois Message édité par Gf4x3443 le 01-05-2008 à 22:03:10 |
tpierron | Et accessoirement pourquoi dans ton code tu essayes d'afficher "donnees2", alors que dans ta fonction tu manipules "donnees" ? |
gilou ModérateurModzilla | A priori, ce que tu veux est quelque chose de ce genre ci:
Message édité par gilou le 01-05-2008 à 23:59:38 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
gilou ModérateurModzilla |
Certes, mais le proto de sa fonction a un nom de fichier, pas un fd, alors...
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
Gf4x3443 Killing perfection |
|
Publicité | Posté le 01-05-2008 à 23:59:05 |
gilou ModérateurModzilla | Oui, enfin, quand je parlais de prog systeme, je pensais vraie prog systeme unix, parce que la, c'est de l'applicatif avec eventuellement des streams, s'il fait du P2P.
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
freepopo | Merci pour tes précisions mais je ne souhaite pas lire spécialement des caractères , ce ne sont pas des fichiers textes que je lie mais tout (.mp3, .doc etc) et je les transfere en utilisant un buffer de caractere qui a l'avantage "d'écrire octet par octet".
|
gilou ModérateurModzilla |
c'est une allusion a quoi?
Message édité par gilou le 02-05-2008 à 01:04:10 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
Gf4x3443 Killing perfection |
fread et fopen sont tout à fait utilisable pour des flux binaires. Le C se fiche un peu de savoir si ce sont des char ASCII ou pas, lui ne voit que des nombres.
Si je comprends bien ta phrase, tu empiles des buffers. Les fonctions f* gèrent déjà un buffer, donc tu empiles des fonctionnalités pour pas grand chose. Edit: et comme te le montre gilou au dessus, tu complexifies ton code pour pas grand chose. A toi de voir ou tu veux gérer tout ca. Message cité 1 fois Message édité par Gf4x3443 le 02-05-2008 à 01:06:27 |
gilou ModérateurModzilla |
Tout a fait. --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
Gf4x3443 Killing perfection |
|
Sujets relatifs | |
---|---|
chemin du dossier contenant le fichier Excel | Problème avec Visual C++ |
class non reconnue depuis un autre fichier | reference a un autre fichier c++ |
Binding entre un schéma XSD et un ensemble de classes C++ | Récupérer une ligne d'un fichier |
Base de donnée pour remplacer lignes d'un fichier texte | grep et fichier |
Vector en C++ - Optimisation de la recherche | Remplacement de caractères dans fichier |
Plus de sujets relatifs à : [C] lire un fichier......mon dieu aidez moi !! |