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" ; 
			  }}