Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1630 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  PRB de copy de fichier dans char *

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PRB de copy de fichier dans char *

n°711316
tckoullou
Posté le 28-04-2004 à 20:48:32  profilanswer
 

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

mood
Publicité
Posté le 28-04-2004 à 20:48:32  profilanswer
 

n°711322
myst78
Posté le 28-04-2004 à 20:56:56  profilanswer
 

ca dit quoi comme erreur exactement ?


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
n°711324
Kristoph
Posté le 28-04-2004 à 21:06:31  profilanswer
 

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.

n°711325
myst78
Posté le 28-04-2004 à 21:09:28  profilanswer
 

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...
n°711331
Kristoph
Posté le 28-04-2004 à 21:22:19  profilanswer
 

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

n°711336
tckoullou
Posté le 28-04-2004 à 21:26:05  profilanswer
 

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 ??

n°711341
Kristoph
Posté le 28-04-2004 à 21:28:45  profilanswer
 

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

n°711349
tckoullou
Posté le 28-04-2004 à 21:33:02  profilanswer
 

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

n°711351
tckoullou
Posté le 28-04-2004 à 21:34:15  profilanswer
 

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

n°711353
Kristoph
Posté le 28-04-2004 à 21:35:02  profilanswer
 

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.

mood
Publicité
Posté le 28-04-2004 à 21:35:02  profilanswer
 

n°711355
tckoullou
Posté le 28-04-2004 à 21:36:59  profilanswer
 

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

n°711357
tckoullou
Posté le 28-04-2004 à 21:38:47  profilanswer
 

ok je comence a cernet le probleme merci

n°711359
Taz
bisounours-codeur
Posté le 28-04-2004 à 21:42:09  profilanswer
 

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

n°711361
Taz
bisounours-codeur
Posté le 28-04-2004 à 21:48:18  profilanswer
 

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)

n°711363
tckoullou
Posté le 28-04-2004 à 21:50:55  profilanswer
 

ok jvai voir sa merci

n°711368
tckoullou
Posté le 28-04-2004 à 21:58:37  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  PRB de copy de fichier dans char *

 

Sujets relatifs
Formulaire + nom de fichier uniquecomment créer un fichier d'aide a la sauce visual?
MySQL (export de données en fichier CSV) ?[VISUAL C++] Indentation de fichier XML
Telechargement de fichierLire, ecrire et imprimer un fichier pdf
lire et afficher un fichier texte en Clire et ecrire dans un fichier xml en c++ !!
choix d'un repertoire pour creation de fichiersupprimer un fichier texte depuis le vba/excel ????
Plus de sujets relatifs à : PRB de copy de fichier dans char *


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR