trfghfhfhanspjkhgfhgfjgarencies cgfdgfaden es
DESCRIPTION
khjlkljlgjhkhj hlkjhlhjfhgjjkjh hklgj f jhg k hkl fgjfgkhjlhl hkñTRANSCRIPT
-
Manipulaci de cadenes(un resum de confusions de companys vostres)
Llus Garrido i scar Amors
Grau dEnginyeria Informtica
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulaci de cadenes
La prctica requereix manipular cadenes de carcters.En C les cadenes de carcters funcionen de forma diferent a lescadenes del llenguatges com Python o Java.En particular
Tota cadena ha destar finalitzada amb el byte zero (carcter\0). Moltes funcions de la llibreria C ho assumeixen perfuncionar correctament.Una cadena no s un objecte i cal anar amb compte ambcerts tipus de manipulacions (exemples a les segentstransparncies).
#include
int main(void){
char a[14] = "Bon dia!";
printf("%s", a);
return 0;} a
B o n d ai ! \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulaci de cadenes
Aquest codi no funcionar (per compila!). Per qu ?
#include #include
char *genera_cadena(){char str[100];
// Processa
return str;}
int main(void){char *cadena;
cadena = genera_cadena();
// Processa}
En retornar de genera_cadena la cadena str es destrueix.
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulaci de cadenes
Aquest codi no funcionar (per compila!). Per qu ?
#include #include
char *genera_cadena(){char str[100];
// Processa
return str;}
int main(void){char *cadena;
cadena = genera_cadena();
// Processa}
En retornar de genera_cadena la cadena str es destrueix.
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulaci de cadenes
La forma correcta dimplementar la funcionalitat anterior s
#include #include
char *genera_cadena(){char *str = malloc(100 * sizeof(char));
// Processa
return str;}
int main(void){char *cadena;
cadena = genera_cadena();
free(cadena);}
Observar que la cadena subica i sallibera en dues funcionsdiferents.
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulaci de cadenes
Altres formes dimplementar-ho sn aquestes
#include #include
void genera_cadena(char *str){// Processa
}
int main(void){char *cadena;
cadena = malloc(100 * sizeof(char));
genera_cadena(cadena);
free(cadena);}
#include #include
void genera_cadena(char *str){// Processa
}
int main(void){char cadena[100];
genera_cadena(cadena);
}
Llus Garrido i scar Amors Manipulaci de cadenes
-
Manipulacions de cadenes
Com sinicialitza de forma correcta una cadena ?
#include #include
int main(void){char *cadena;
cadena = malloc(100 * sizeof(char));
// No es la forma correcta d'inicialitzar!cadena = "";
// La forma correcta d'inicialitzar esstrcpy(cadena, "");
// O be tambecadena[0] = '\0';
}
Llus Garrido i scar Amors Manipulaci de cadenes