En aquest tema, explorarem les funcions més comunes i útils per treballar amb arrays i strings en C. Aquestes funcions ens permeten manipular i gestionar arrays i cadenes de caràcters de manera eficient.
Funcions d'Array
sizeof
sizeof
La funció sizeof
és un operador que retorna la mida en bytes d'un tipus de dada o d'una variable. És especialment útil per determinar la mida d'un array.
Exemple:
#include <stdio.h> int main() { int arr[10]; printf("Mida de l'array: %lu bytes\n", sizeof(arr)); printf("Nombre d'elements en l'array: %lu\n", sizeof(arr) / sizeof(arr[0])); return 0; }
Explicació:
sizeof(arr)
retorna la mida total de l'array en bytes.sizeof(arr) / sizeof(arr[0])
calcula el nombre d'elements en l'array.
memcpy
memcpy
La funció memcpy
copia un bloc de memòria d'una ubicació a una altra.
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { int src[5] = {1, 2, 3, 4, 5}; int dest[5]; memcpy(dest, src, sizeof(src)); for(int i = 0; i < 5; i++) { printf("%d ", dest[i]); } return 0; }
Explicació:
memcpy(dest, src, sizeof(src))
copia el contingut desrc
adest
.
memset
memset
La funció memset
omple un bloc de memòria amb un valor específic.
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { int arr[5]; memset(arr, 0, sizeof(arr)); for(int i = 0; i < 5; i++) { printf("%d ", arr[i]); } return 0; }
Explicació:
memset(arr, 0, sizeof(arr))
omple l'arrayarr
amb zeros.
Funcions de String
strlen
strlen
La funció strlen
retorna la longitud d'una cadena de caràcters (sense incloure el caràcter nul \0
).
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { char str[] = "Hola, món!"; printf("Longitud de la cadena: %lu\n", strlen(str)); return 0; }
Explicació:
strlen(str)
retorna la longitud de la cadenastr
.
strcpy
strcpy
La funció strcpy
copia una cadena de caràcters a una altra.
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { char src[] = "Hola, món!"; char dest[20]; strcpy(dest, src); printf("Cadena copiada: %s\n", dest); return 0; }
Explicació:
strcpy(dest, src)
copia el contingut desrc
adest
.
strcat
strcat
La funció strcat
concatena (afegeix) una cadena de caràcters al final d'una altra.
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { char str1[20] = "Hola, "; char str2[] = "món!"; strcat(str1, str2); printf("Cadena concatenada: %s\n", str1); return 0; }
Explicació:
strcat(str1, str2)
afegeix el contingut destr2
al final destr1
.
strcmp
strcmp
La funció strcmp
compara dues cadenes de caràcters.
Sintaxi:
Exemple:
#include <stdio.h> #include <string.h> int main() { char str1[] = "Hola"; char str2[] = "Hola"; char str3[] = "Adéu"; printf("Comparació str1 i str2: %d\n", strcmp(str1, str2)); printf("Comparació str1 i str3: %d\n", strcmp(str1, str3)); return 0; }
Explicació:
strcmp(str1, str2)
retorna 0 si les cadenes són iguals, un valor negatiu sistr1
és menor questr2
, i un valor positiu sistr1
és major questr2
.
Exercicis Pràctics
Exercici 1: Copiar un Array
Escriu un programa que copiï el contingut d'un array a un altre utilitzant memcpy
.
Solució:
#include <stdio.h> #include <string.h> int main() { int src[5] = {10, 20, 30, 40, 50}; int dest[5]; memcpy(dest, src, sizeof(src)); for(int i = 0; i < 5; i++) { printf("%d ", dest[i]); } return 0; }
Exercici 2: Concatenar Cadenes
Escriu un programa que concateni dues cadenes de caràcters utilitzant strcat
.
Solució:
#include <stdio.h> #include <string.h> int main() { char str1[30] = "Bon dia, "; char str2[] = "com estàs?"; strcat(str1, str2); printf("Cadena concatenada: %s\n", str1); return 0; }
Resum
En aquesta secció, hem après sobre diverses funcions útils per treballar amb arrays i strings en C. Aquestes funcions ens permeten copiar, omplir, calcular la longitud, copiar, concatenar i comparar cadenes de caràcters, així com gestionar arrays de manera eficient. Practicar amb aquestes funcions és essencial per dominar la manipulació de dades en C.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat