IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

récupérer le contenu d'un buffer dans un fichier


Sujet :

Langage C++

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    ingénieur reseaux et télécommunications
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur reseaux et télécommunications

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut récupérer le contenu d'un buffer dans un fichier
    bonjour,

    j'ai réalisé ce code pour recevoir un fichier A.txt de la par d'un client qui contient une seule ligne, l'enregistrer , puis récupérer la 1ere valeur de cette ligne ,puis je compare cette valeur au autres valeurs (des 1ers entier de chaque lignes d'un fichier B.txt déjà crée chez le serveur) de fichier B, si cette valeur n'existe pas dans ce dernier toute la ligne de fichier A sera copier dans B (a la fin de fichier) sinon on ne retourne rien ! !

    là j'ai pu récupérer le contenu de fichier A, j'ai pu faire la comparaison entre les éléments des 2 fichiers mais le problème c'est que je n'ai pas pu copier le contenu de A dans B je sais pas elle est ou exactement l'erreur !lorsque je compile tout va bien mais lorsque j'ouvre le fichier B je ne trouve pas la ligne ajoutée !!!

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
     
    void recvF ( int connfd)
    {
    	/*** Declaration des variables ***/
       char buffer[256];
                // bzero(buffer,256);
        int n = 0;
         char revbuf[LENGTH];
    	fgets(buffer,255,stdin);
                // bzero(buffer,256);
     
    int fr_block_sz = 0;
     
     
    	/*** Code ***/
    	n = read(connfd, buffer, 255);
                if (n < 0) cout << "Erreur de lecture de  socket";
     
     
                 fstream fr ("basecloud.txt",ios::in|ios::out|ios::app);
                ofstream inte("intermediaireCloud.txt",ios::out|ios::trunc);
    if(!inte )
           		   cerr << "Impossible d'ouvrir le fichier !" << endl;
     
     
            		bzero(revbuf, LENGTH); 
     
    	  while((fr_block_sz = recv(connfd, revbuf, LENGTH, 0)) > 0) 
    	  {
            revbuf[sizeof(revbuf)]='\0';
          	inte.write(revbuf,sizeof(revbuf));
     
          	 if (fr_block_sz == 0 || fr_block_sz != 512) 
    	           {
    	               break;
    	           }
          }     
          cout<<"fichier reçu \n ";
     
     
           inte.close(); 
       ifstream inter("intermediaireCloud.txt");
      if( !fr && !inter)
           		   cerr << "Impossible d'ouvrir les fichiers !" << endl;
     
     
     
     
         	string IDnvcl,IDcl,infC,INF;
     
     
     
     
                 int  c=0;
         			while(inter)
         			{
         				getline(inter,IDnvcl);
         				c++;
         			istringstream is(IDnvcl);
         			if (c==1)
         			{
         				is >> IDcl;
         				break;
         			}
         	      }
         		cout << IDcl << "\n"<< IDnvcl<<"\n";
     
         		string ID,I;
    	     			bool test= false;
    	     		  while (getline(fr,ID))
    	     		  	{
    	     		  		//getline(fr,ID);
    	     		  		cout<< "recherche de client...\n" ;
    	     		  		istringstream iss(ID);
    	     		  		iss >> I;
    	     		  		cout << "ID :  "<< I <<"   \n";
     
    	     				if (I == IDcl)
     
    	     		        {
    	     		 	    cout << " le client avec le ID : "<<I<<" existe deja!!..\n";
    						          inter.close ();
    						          fr.close();
    								  test =true;
    			     		          break ;
    			     		          exit(0);
    	     		        }
     
    				    }
     
    				    if (!test)
    				     {
    			     		cout<<"traitement d'enregistrement de client est en cour...\n";
     
    	                filebuf *pbuf = inter.rdbuf();
     
    	                 size_t size =pbuf ->pubseekoff(0,inter.end,inter.in);
    	                 pbuf->pubseekpos (0,inter.in);
     
    	                 char* buff=new char[size];
     
    	                 pbuf->sgetn (buff,size);
     
     
    			     		 	if(size<0)
    			     		 		cerr<< "erreur";
     
    			       fr.write(buff,size);
    					inter.close();
    					fr.close();
    					delete [] buff;
     
    			  cout<<"client enregistré !! ...\n" ; 
    			  }}

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Indentation du code foireuse.
    Utilisez un débogueur.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    ingénieur reseaux et télécommunications
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur reseaux et télécommunications

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    j'ai pas compris le truc , peux tu m'expliquer ??

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Bika12 Voir le message
    j'ai pas compris le truc , peux tu m'expliquer ??
    On va faire simple : on dirait que tu as joué au fléchettes pour choisir la position à laquelle commence chaque ligne de ton code. Cela rend les choses totalement incompréhensibles

    Commence déjà en mettant "un peu d'ordre" dans tout cela, par exemple en passant d'un nombre donné (mettons quatre) d'espaces vers la droite à chaque fois que tu croise une accolade ouvrante, et en "revenant" vers la gauche du même nombre d'espace à chaque fois que tu croise une accolade fermante (aligne toi sur le premier caractère de la première ligne qui suit l'ouverture de l'accolade pour tout ce qu'il y a entre l'accolade ouvrante et l'accolade fermante).

    Tu verras, le code deviendra tout de suite beaucoup plus clair, car les différents blocs se distingueront d'eux même .

    Cela t'aidera déjà toi, qui est sensé avoir en tête le code que tu viens d'écrire, mais cela nous aidera aussi nous, qui n'étions pas au dessus de ton épaule quand tu l'as écrit, et qui n'avons donc (pour l'instant) aucun moyen de savoir pourquoi tu fais quoi à quel moment
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/08/2010, 15h47
  2. [XL-2003] Récupérer le contenu d'une ligne dans un fichier excel (rapidement)
    Par kigrez dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2010, 21h20
  3. Réponses: 1
    Dernier message: 10/04/2010, 07h16
  4. Réponses: 1
    Dernier message: 29/09/2007, 09h46
  5. Réponses: 7
    Dernier message: 12/06/2007, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo