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

  1. 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.

  1. memcpy

La funció memcpy copia un bloc de memòria d'una ubicació a una altra.

Sintaxi:

void *memcpy(void *dest, const void *src, size_t n);

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 de src a dest.

  1. memset

La funció memset omple un bloc de memòria amb un valor específic.

Sintaxi:

void *memset(void *str, int c, size_t n);

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'array arr amb zeros.

Funcions de String

  1. strlen

La funció strlen retorna la longitud d'una cadena de caràcters (sense incloure el caràcter nul \0).

Sintaxi:

size_t strlen(const char *str);

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 cadena str.

  1. strcpy

La funció strcpy copia una cadena de caràcters a una altra.

Sintaxi:

char *strcpy(char *dest, const char *src);

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 de src a dest.

  1. strcat

La funció strcat concatena (afegeix) una cadena de caràcters al final d'una altra.

Sintaxi:

char *strcat(char *dest, const char *src);

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 de str2 al final de str1.

  1. strcmp

La funció strcmp compara dues cadenes de caràcters.

Sintaxi:

int strcmp(const char *str1, const char *str2);

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 si str1 és menor que str2, i un valor positiu si str1 és major que str2.

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

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

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

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats