Diferència entre revisions de la pàgina «Fonaments de gestió de fitxers, estructures i gestió dinàmica de memòria»
Salta a la navegació
Salta a la cerca
m (→Unions) |
m (→Fitxers) |
||
Línia 1: | Línia 1: | ||
= Fitxers = | = 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 = | = Estructures = | ||
/* | /* |
Revisió del 13:51, 2 maig 2023
Contingut
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; }