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 :
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 :
oid TraitementRcv ( int connfd) { char buffer[256]; int n = 0; char revbuf[LENGTH]; fgets(buffer,255,stdin); int fr_block_sz = 0; 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 cours...\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"; } }
A voir également:
- Récupérer le contenu d'un buffer dans un fichier
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Fichier rar - Guide
1 réponse
Bonjour,
Sans rentrer dans les détails du code, pourquoi ne pas ouvrir A.txt en mode append et écrire le contenu de B.txt ainsi en fin de fichier ?
https://stackoverflow.com/questions/2393345/how-to-append-text-to-a-text-file-in-c
Bonne chance
Sans rentrer dans les détails du code, pourquoi ne pas ouvrir A.txt en mode append et écrire le contenu de B.txt ainsi en fin de fichier ?
https://stackoverflow.com/questions/2393345/how-to-append-text-to-a-text-file-in-c
Bonne chance