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:
Inicialització
Hi ha diverses maneres d'inicialitzar un string en C:
-
Inicialització directa:
char str1[] = "Hola, món!";
-
Inicialització caràcter a caràcter:
char str2[] = {'H', 'o', 'l', 'a', ',', ' ', 'm', 'ó', 'n', '!', '\0'};
-
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):
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
- 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