PRB de copy de fichier dans char *

PRB de copy de fichier dans char * - C++ - Programmation

Marsh Posté le 28-04-2004 à 20:48:32    

bonjour alors j'ai un probleme pour copier un fichier dans un buffer de char * sa marche niquel pour du txt mais po pour un exe par exemple.
 
 
car apres je veut envoyer ce char * par le rezo avec une fonction de ty pe send(socket,char *buffer,etc....
 voila le code qui copy le fichier dans un buffer avec un curseur
j'ai tou fait moi meme alors je sais po si c'est propre mais en toucas sa marche, mais que sur les txt .enfet il me faut trouver le moyer de copier un fichier compler dans un tableau de char buf[SIZE_OF_FILE]  
 

Code :
  1. //---------------------------------------------------------------------------
  2. #include <iostream.h>
  3. #include <fstream.h>
  4. #include <conio.h>
  5. //---------------------------------------------------------------------------
  6. int main()
  7. {
  8. ifstream fi("c:\\a.JPG",ios::binary);//le code marche si je met a.txt  
  9. ofstream fo("d:\\b.jpg",ios::binary);//et b.txt mais sinon sa plante
  10. if(!fi)cout<<"ereur ouverture"<<endl;
  11. char buf[100000];
  12. char c;
  13. int i=0;
  14. while (!fi.eof())
  15. {
  16. fi.get(c);
  17. buf[i]=c;
  18. i++;
  19. }
  20. i=0;
  21. while (buf[i]!=NULL)
  22. {
  23. c=buf[i];
  24. i++;
  25. fo.put(c);
  26. }
  27. getch();
  28.         return 0;
  29. }


Merci pour vo reponces

Reply

Marsh Posté le 28-04-2004 à 20:48:32   

Reply

Marsh Posté le 28-04-2004 à 20:56:56    

ca dit quoi comme erreur exactement ?


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 28-04-2004 à 21:06:31    

Code :
  1. while (buf[i]!=NULL)


 
En fait, tu as correctement lu le fichier a.jpg en mémoire, mais quand tu écris le résultat, tu t'arretes au premier caractère \0.

Reply

Marsh Posté le 28-04-2004 à 21:09:28    

euh ouais, ou alors il continue de lire indefiniment parce que a la creation du buf[100000] y'a n'importe quoi dedans...
non ?
 
NULL c'est pas different de '\0' sinon ???


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 28-04-2004 à 21:22:19    

myst78 a écrit :

euh ouais, ou alors il continue de lire indefiniment parce que a la creation du buf[100000] y'a n'importe quoi dedans...
non ?
 
NULL c'est pas different de '\0' sinon ???


 
Par definition, NULL == 0 et '\0' == 0 aussi

Reply

Marsh Posté le 28-04-2004 à 21:26:05    

ben mon probleme sa fait un acess violation a une adresse memoire mais je suis po loin de la solution alors??
c'est juste une question de gestion memoire ??

Reply

Marsh Posté le 28-04-2004 à 21:28:45    

Puisque i contient la taille du buffer à la fin de la lecture, pourquoi tu n'utilises pas cette information pour réécrire juste ce qu'il faut ? Par exemple avec un for (j=0;j<i;j++)
 
Et encore mieux, pourquoi tu passes par un buffer intermediaire et tu ne fais en même temps la lecture et l'écriture ? :D

Reply

Marsh Posté le 28-04-2004 à 21:33:02    

enfet je me rapelle bien il ya toujour null a la fin de ce qui a dnas le tableau mai peut etre faut l'initialiser a null

Reply

Marsh Posté le 28-04-2004 à 21:34:15    

oué ok mais enfet je veut savoir si c'est la bone methode surtou si je par sur une bonne base

Reply

Marsh Posté le 28-04-2004 à 21:35:02    

tckoullou a écrit :

enfet je me rapelle bien il ya toujour null a la fin de ce qui a dnas le tableau mai peut etre faut l'initialiser a null


 
Oui mais non. Tu as un tableau de char et NULL c'est le char 0. Peut-être bien que ton buffer se termine par un char 0, mais si tu lit un fichier binaire il y aura très probablement d'autres char 0 en plein milieu. Par contre cela n'arrive pratiquement jamais avec un fichier texte.

Reply

Marsh Posté le 28-04-2004 à 21:35:02   

Reply

Marsh Posté le 28-04-2004 à 21:36:59    

enfet je dois stocker le fichier dans un buffer char * et l'envoyer par le rezo via le serveur et ensuite ecrire le fichier dans le client

Reply

Marsh Posté le 28-04-2004 à 21:38:47    

ok je comence a cernet le probleme merci

Reply

Marsh Posté le 28-04-2004 à 21:42:09    

non mais merde c'est le weekend là ....
 
des char*, eof, des .h, un getch ... il est ou mon bot bordel :o

Reply

Marsh Posté le 28-04-2004 à 21:48:18    

http://cplusplus.com/ref/iostream/istream/seekg.html
y a un exemple
 
NB : l'exemple est juste un exemple, ce n'est pas une bonne façon de copier un fichier. l'exemple est lui même critiquable (notemment au niveau du int length, voir la doc pour le streampos, etc)

Reply

Marsh Posté le 28-04-2004 à 21:50:55    

ok jvai voir sa merci

Reply

Marsh Posté le 28-04-2004 à 21:58:37    

ok je pense que je vais yariver avec ce desrciptif c'est cool merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed