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
sizeofLa 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
memcpyLa 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 desrcadest.
memset
memsetLa 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'arrayarramb zeros.
Funcions de String
strlen
strlenLa 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
strcpyLa 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 desrcadest.
strcat
strcatLa 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 destr2al final destr1.
strcmp
strcmpLa 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
