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
Línia 7: Línia 7:
 
   
 
   
 
  int main(int argc, char* argv[]){
 
  int main(int argc, char* argv[]){
     FILE *f;
+
     '''FILE *'''f;
 
     char szFitxer[N], ch, szContingut[999];
 
     char szFitxer[N], ch, szContingut[999];
 
   
 
   
Línia 16: Línia 16:
 
         scanf("%s", szFitxer);
 
         scanf("%s", szFitxer);
 
     }
 
     }
     f = fopen(szFitxer, "r");
+
     f = '''fopen'''(szFitxer, '''"r"''');
 
     if(f){ //si f es NULL (0) vol dir que el arxiu no s'ha pogut obrir
 
     if(f){ //si f es NULL (0) vol dir que el arxiu no s'ha pogut obrir
 
         printf("L'arxiu %s existeix\n", szFitxer);
 
         printf("L'arxiu %s existeix\n", szFitxer);
 
         printf("El contingut de l'arxiu és: \n");
 
         printf("El contingut de l'arxiu és: \n");
         fread(szContingut, 1, 999, f);
+
         '''fread'''(szContingut, 1, 999, f);
 
         printf("%s", szContingut);
 
         printf("%s", szContingut);
         fclose(f);
+
         '''fclose'''(f);
 
     } else{
 
     } else{
 
         printf("L'arxiu %s no existeix\n", szFitxer);
 
         printf("L'arxiu %s no existeix\n", szFitxer);
Línia 29: Línia 29:
 
     return 0;
 
     return 0;
 
  }
 
  }
 +
 
== Llegir arxius línia a línia en Python ==
 
== Llegir arxius línia a línia en Python ==
 
  # fitxer03_02.py
 
  # fitxer03_02.py

Revisió del 13:52, 2 maig 2023

Fitxers

Llegir arxius línia a línia en C

//fitxer03_02.c
#include <stdio.h>
#include <string.h>
#define N 99

int main(int argc, char* argv[]){
   FILE *f;
   char szFitxer[N], ch, szContingut[999];

   if (argc == 2){
       strcpy(szFitxer, argv[1]);
   } else{
       printf("Nom fitxer: ");
       scanf("%s", szFitxer);
   }
   f = fopen(szFitxer, "r");
   if(f){ //si f es NULL (0) vol dir que el arxiu no s'ha pogut obrir
       printf("L'arxiu %s existeix\n", szFitxer);
       printf("El contingut de l'arxiu és: \n");
       fread(szContingut, 1, 999, f);
       printf("%s", szContingut);
       fclose(f);
   } else{
       printf("L'arxiu %s no existeix\n", szFitxer);
   }

   return 0;
}

Llegir arxius línia a línia en Python

# fitxer03_02.py
import sys

if len(sys.argv) == 2:
   nomFitxer = sys.argv[1]
else:
   nomFitxer = input("Nom arxiu: ")
try:
   f = open(nomFitxer)
   print("%s existeix"%nomFitxer)
   print("El contingut de l'arxiu és: ")
   szContingut = f.read()
   nL = 1
   szLinia = ""
   for c in szContingut:
       #print("%d) %s"%(nL, linia))
       #nL+=1
       if c != "\n":
           szLinia += c
       else:
           print("%d) %s"%(nL, szLinia))
           nL+=1
           szLinia = ""
except:
   print("%s no existeix"%nomFitxer)

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

Comparativa entre estructures i unions al d97

/*
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;
}