Diferència entre revisions de la pàgina «Fonaments de gestió de fitxers, estructures i gestió dinàmica de memòria»

De binefa.com
Salta a la navegació Salta a la cerca
m
Línia 40: Línia 40:
 
  }
 
  }
 
= Unions =
 
= Unions =
 +
/*
 +
http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p7.htm
 +
*/
 +
#include <stdio.h>
 +
 +
struct notes {
 +
    int mat, fis, inf,qui, fil ;
 +
};
 +
 +
'''union''' alumne {
 +
    struct notes N;
 +
    int nota[5];
 +
};
 +
 +
int main(){
 +
    int ct;
 +
    '''union''' alumne joan;
 +
 +
    joan.N.mat=10;
 +
    joan.N.fis=9;
 +
    joan.N.inf=7;
 +
    joan.N.qui=9;
 +
    joan.N.fil=10;
 +
 +
    printf("\nmat\tfis\tinf\tqui\tfil\n");
 +
    for(ct=0;ct<5;ct++){
 +
        printf("%d\t",joan.nota[ct]);
 +
    }
 +
 +
    return 0;
 +
}
 +
 
= Enumeració =
 
= Enumeració =
 
  /*
 
  /*

Revisió del 13:45, 2 maig 2023

Fitxers

Estructures

/*
st03.c
*/
#include <stdio.h>

struct treballador{
   char nom[50];
   char cognom1[30];
   char cognom2[30];
   int edat;
};

void vPresentaTreballador(struct treballador stT, const char *szQui){
   printf("%s: %s %s %s te %d anys\n",szQui,stT.nom,stT.cognom1,stT.cognom2,stT.edat);
}

void vAugmentaUnAny(struct treballador *pStT){
   (*pStT).edat += 1;
}

void vAugmentaUnAny2(struct treballador *pStT){
   //(*pStT).edat += 1;
   pStT->edat += 1;
}

int main(){
   struct treballador *pT,enginyer, administratiu = {"Eric","Alvarez","Cuerva",18}, auxiliar;
   
   vPresentaTreballador(administratiu,"Administratiu");
   pT = &administratiu;
   vPresentaTreballador(*pT,"Apuntador a administratiu");
   vAugmentaUnAny(pT); //Pas per referència de l'estructura
   vPresentaTreballador(*pT,"1) Apuntador a administratiu amb un any incrementat");
   vAugmentaUnAny2(pT); //Pas per referència de l'estructura
   vPresentaTreballador(*pT,"2) Apuntador a administratiu amb un any incrementat");
   
   return 0;
}

Unions

/*
http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p7.htm
*/
#include <stdio.h>

struct notes {
   int mat, fis, inf,qui, fil ;
};

union alumne {
   struct notes N;
   int nota[5];
};

int main(){
   int ct;
   union alumne joan;
   joan.N.mat=10;
   joan.N.fis=9;
   joan.N.inf=7;
   joan.N.qui=9;
   joan.N.fil=10;
   printf("\nmat\tfis\tinf\tqui\tfil\n");
   for(ct=0;ct<5;ct++){
       printf("%d\t",joan.nota[ct]);
   }

   return 0;
}

Enumeració

/*
enum01.c
*/
#include <stdio.h>

enum dia {dilluns, dimarts, dimecres = 7, dijous, divendres, dissabte, diumenge}; 

int main(){
   enum dia avui;
   
   avui = divendres;
   if (avui == divendres){
       printf("És divendres\n");
   }else{
       printf("No és divendres\n");
   }
   printf("avui:  %d\n",(int)avui);
   avui = diumenge;
   if (avui == divendres){
       printf("És divendres\n");
   }else{
       printf("No és divendres\n");
   }

   return 0;
}