Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <fcntl.h>
- #include <unistd.h>
- typedef struct {
- int code;
- char nom[20];
- int qtt_stock;
- } ARTICLE_TYPE;
- void saisie (ARTICLE_TYPE *p_element) {
- printf("SAISIR ARTICLE\n");
- printf("Entrer le code : ");
- scanf("%d", &p_element->code);
- printf("Entrer la quantite en stock : ");
- scanf("%d", &p_element->qtt_stock);
- printf("Entrer le nom : ");
- scanf("%s", p_element->nom);
- }
- void affichage (ARTICLE_TYPE element){
- printf("\nCode:%d\nQtt:%d\nNom:%s\n", element.code, element.qtt_stock, element.nom);
- }
- int ouverture (char *nom, int mode, int droits){
- int res=open(nom, mode, droits);
- return(res);
- }
- int fermeture (int descripteur){
- int res=close(descripteur);
- return (res);
- }
- int ecriture (int descripteur, ARTICLE_TYPE element){
- int res=write(descripteur, &element, sizeof(ARTICLE_TYPE));
- return (res);
- }
- int lecture (int descripteur, ARTICLE_TYPE *p_element){
- int res=read(descripteur, p_element, sizeof(ARTICLE_TYPE));
- return (res);
- }
- void fusion (int des1, int des2, int des3){
- int suiv_fich1 = 1;
- int suiv_fich2 = 1;
- int fin_fich1 = 0;
- int fin_fich2 = 0;
- int nb;
- ARTICLE_TYPE art1, art2;
- do {
- if ((fin_fich1==0) && (suiv_fich1==1)){
- nb = lecture(des1, &art1);
- if (nb <=0){
- fin_fich1=1;
- }
- }
- if ((fin_fich2==0) && (suiv_fich2==1)){
- nb = lecture(des2, &art2);
- if (nb <=0){
- fin_fich2=1;
- }
- }
- if ((fin_fich1==0) && (fin_fich2==0)){
- if (art1.code < art2.code){
- ecriture(des3, art1);
- suiv_fich1=1;
- suiv_fich2=0;
- }
- else {
- ecriture(des3, art2);
- suiv_fich1=0;
- suiv_fich2=1;
- }
- }
- else {
- if (fin_fich1==1) {
- if (fin_fich2==0){
- ecriture(des3, art2);
- suiv_fich2=1;
- }
- }
- else {
- ecriture(des3, art1);
- suiv_fich1=1;
- }
- }
- } while ((fin_fich1==0) && (fin_fich2==0));
- }
- void main (void){
- int i, n, m, j, p, k, v_open1, v_open2, v_open3;
- ARTICLE_TYPE aa, bb, cc;
- v_open1=ouverture("donnees1.dat", O_WRONLY | O_CREAT, 0766);
- printf("Combien d'articles dans données1 ? ");
- scanf("%d", &n);
- for (i=0; i<n; i++){
- saisie(&aa);
- ecriture(v_open1, aa);
- }
- close(v_open1);
- v_open1=ouverture("donnees1.dat", O_RDONLY, 0);
- v_open2=ouverture("donnees2.dat", O_WRONLY | O_CREAT, 0766);
- printf("Combien d'articles dans données2 ? ");
- scanf("%d", &m);
- for (j=0; j<m; j++){
- saisie(&bb);
- ecriture(v_open2, bb);
- }
- close(v_open2);
- v_open2=ouverture("donnees2.dat", O_RDONLY, 0);
- v_open3=ouverture("fusion.dat", O_WRONLY | O_CREAT, 0766);
- fusion(v_open1, v_open2, v_open3);
- close(v_open3);
- v_open3=ouverture("fusion.dat", O_RDONLY , 0);
- p=m+n;
- printf("\nVOICI LA LISTE DE TOUS LES ARTICLES");
- for (k=0; k<p; k++){
- lecture(v_open3, &cc);
- printf("\nARTICLE %d", k+1);
- affichage(cc);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement