En aquest tema, aprendrem com gestionar i manipular strings en C. Els strings són una part fonamental de la programació, ja que permeten treballar amb text. En C, els strings són arrays de caràcters terminats amb un caràcter nul ('\0'). A continuació, veurem com declarar, inicialitzar i utilitzar strings, així com les funcions més comunes per treballar amb ells.

Continguts

Declaració i Inicialització de Strings

Declaració

En C, un string es declara com un array de caràcters. Per exemple:

char str[50]; // Declara un array de 50 caràcters

Inicialització

Hi ha diverses maneres d'inicialitzar un string en C:

  1. Inicialització directa:

    char str1[] = "Hola, món!";
    
  2. Inicialització caràcter a caràcter:

    char str2[] = {'H', 'o', 'l', 'a', ',', ' ', 'm', 'ó', 'n', '!', '\0'};
    
  3. Assignació després de la declaració:

    char str3[50];
    strcpy(str3, "Hola, món!"); // Utilitza la funció strcpy de la biblioteca string.h
    

Lectura i Escriptura de Strings

Lectura

Per llegir un string des de l'entrada estàndard, podem utilitzar scanf o gets (tot i que gets està desaconsellat per problemes de seguretat):

char str[50];
scanf("%s", str); // Llegeix un string fins a un espai en blanc

Escriptura

Per escriure un string a la sortida estàndard, podem utilitzar printf o puts:

char str[] = "Hola, món!";
printf("%s\n", str); // Escriu el string seguit d'un salt de línia
puts(str); // Escriu el string seguit d'un salt de línia automàticament

Funcions de la Biblioteca string.h

La biblioteca string.h proporciona diverses funcions útils per treballar amb strings. A continuació, es mostren algunes de les més comunes:

Funció Descripció
strlen Retorna la longitud del string (sense comptar el caràcter nul).
strcpy Copia un string a un altre.
strncpy Copia un nombre especificat de caràcters d'un string a un altre.
strcat Concatena (afegeix) un string al final d'un altre.
strncat Concatena un nombre especificat de caràcters d'un string al final d'un altre.
strcmp Compara dos strings.
strncmp Compara un nombre especificat de caràcters de dos strings.
strchr Cerca la primera aparició d'un caràcter en un string.
strstr Cerca la primera aparició d'un sub-string en un string.

Exemples d'ús

strlen

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hola, món!";
    printf("La longitud del string és: %lu\n", strlen(str));
    return 0;
}

strcpy

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hola, món!";
    char str2[50];
    strcpy(str2, str1);
    printf("El contingut de str2 és: %s\n", str2);
    return 0;
}

strcat

#include <stdio.h>
#include <string.h>

int main() {
    char str1[50] = "Hola, ";
    char str2[] = "món!";
    strcat(str1, str2);
    printf("El string concatenat és: %s\n", str1);
    return 0;
}

Exercicis Pràctics

Exercici 1

Escriu un programa que llegeixi un string de l'usuari i mostri la seva longitud.

Solució

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("Introdueix un string: ");
    scanf("%s", str);
    printf("La longitud del string és: %lu\n", strlen(str));
    return 0;
}

Exercici 2

Escriu un programa que llegeixi dos strings de l'usuari i els concateni.

Solució

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    printf("Introdueix el primer string: ");
    scanf("%s", str1);
    printf("Introdueix el segon string: ");
    scanf("%s", str2);
    strcat(str1, str2);
    printf("El string concatenat és: %s\n", str1);
    return 0;
}

Exercici 3

Escriu un programa que llegeixi un string de l'usuari i compti el nombre de vocals.

Solució

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    int i, count = 0;
    printf("Introdueix un string: ");
    scanf("%s", str);
    for (i = 0; i < strlen(str); i++) {
        if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' ||
            str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') {
            count++;
        }
    }
    printf("El nombre de vocals és: %d\n", count);
    return 0;
}

Conclusió

En aquest tema, hem après com declarar, inicialitzar i utilitzar strings en C. També hem vist algunes de les funcions més comunes de la biblioteca string.h per treballar amb strings. Els exercicis pràctics proporcionats t'ajudaran a reforçar els conceptes apresos. En el proper tema, explorarem arrays multidimensionals, que ens permetran treballar amb dades més complexes.

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