Introduction
Dans ce laboratoire, vous apprendrez à créer et à manipuler des chaînes de caractères en programmation C. Vous explorerez différentes méthodes pour définir des chaînes, les formater à l'aide de printf, déterminer leur longueur avec strlen et les comparer avec strncmp. Ces opérations de base sur les chaînes sont essentielles pour développer des applications C robustes et flexibles.
Le laboratoire couvre les étapes suivantes : définir des chaînes à l'aide de la notation des pointeurs, définir des chaînes à l'aide de la notation des tableaux locaux, formater des chaînes avec printf, déterminer la longueur des chaînes avec strlen et comparer des chaînes avec strncmp. À la fin de ce laboratoire, vous aurez une bonne compréhension du travail avec les chaînes en C et pourrez appliquer ces techniques dans vos propres projets.
Définir des chaînes de caractères à l'aide de la notation des pointeurs
Dans cette étape, vous apprendrez à définir des chaînes de caractères à l'aide de la notation des pointeurs en C. La notation des pointeurs offre un moyen flexible de créer et de manipuler des chaînes en programmation C.
Tout d'abord, créons un nouveau fichier pour démontrer la définition de chaînes avec la notation des pointeurs :
cd ~/project
touch string_pointer.c
Maintenant, entrez le code suivant :
#include <stdio.h>
int main() {
// Define a string using pointer notation
char *greeting = "Hello, C Programming!";
// Print the string
printf("Greeting: %s\n", greeting);
return 0;
}
Compilez et exécutez le programme :
gcc string_pointer.c -o string_pointer
./string_pointer
Exemple de sortie :
Greeting: Hello, C Programming!
Analysons le code :
char *greetingdéclare un pointeur vers un caractère (chaîne)"Hello, C Programming!"est un littéral de chaîne stocké en mémoire- Le pointeur
greetingpointe vers le premier caractère de la chaîne printf()utilise le spécificateur de format%spour afficher l'ensemble de la chaîne
Vous pouvez également modifier le pointeur pour qu'il pointe vers différentes parties de la chaîne :
#include <stdio.h>
int main() {
char *greeting = "Hello, C Programming!";
// Point to a specific part of the string
char *partial = greeting + 7;
printf("Original string: %s\n", greeting);
printf("Partial string: %s\n", partial);
return 0;
}
Exemple de sortie :
Original string: Hello, C Programming!
Partial string: C Programming!
Définir des chaînes de caractères à l'aide de la notation des tableaux locaux
Dans cette étape, vous apprendrez à définir des chaînes de caractères à l'aide de la notation des tableaux locaux en C. Cette méthode offre une autre façon de créer et d'initialiser des chaînes avec un contrôle plus direct sur le tableau de caractères.
Créons un nouveau fichier pour démontrer la définition de chaînes à l'aide de la notation des tableaux locaux :
cd ~/project
touch string_array.c
Entrez le code suivant :
#include <stdio.h>
int main() {
// Define a string using local array notation
char greeting[30] = "Hello, C Programming!";
// Print the string
printf("Greeting: %s\n", greeting);
return 0;
}
Compilez et exécutez le programme :
gcc string_array.c -o string_array
./string_array
Exemple de sortie :
Greeting: Hello, C Programming!
Explorons quelques variantes de la notation des tableaux locaux :
#include <stdio.h>
int main() {
// Define an array with explicit initialization
char name[10] = {'J', 'o', 'h', 'n', '\0'};
// Define an array with partial initialization
char city[20] = "New York";
// Define an array without specifying size
char message[] = "Welcome to C Programming!";
printf("Name: %s\n", name);
printf("City: %s\n", city);
printf("Message: %s\n", message);
return 0;
}
Exemple de sortie :
Name: John
City: New York
Message: Welcome to C Programming!
Points clés concernant la notation des tableaux locaux :
- Vous pouvez spécifier explicitement la taille du tableau
- Le
'\0'(caractère de fin de chaîne) est crucial pour marquer la fin de la chaîne - Les tableaux peuvent être initialisés avec des caractères individuels ou sous forme de littéraux de chaîne
- Lorsqu'ils ne sont pas entièrement initialisés, les éléments restants sont mis à zéro
Formater des chaînes de caractères avec printf
Dans cette étape, vous apprendrez à utiliser printf() pour formater des chaînes et divers types de données en C. La fonction printf() offre des capacités puissantes de formatage de chaînes.
Créons un nouveau fichier pour démontrer le formatage de chaînes :
cd ~/project
touch string_formatting.c
Entrez le code suivant pour explorer différentes options de formatage :
#include <stdio.h>
int main() {
// Basic string formatting
char name[] = "Alice";
int age = 30;
float height = 5.8;
// Simple string output
printf("Name: %s\n", name);
// Formatting with multiple variables
printf("Profile: %s is %d years old\n", name, age);
// Formatting with floating-point precision
printf("Height: %.1f meters\n", height);
// Width and alignment
printf("Name (right-aligned): %10s\n", name);
printf("Name (left-aligned): %-10s\n", name);
// Mixing different format specifiers
printf("Details: %s, %d years, %.1f meters\n", name, age, height);
return 0;
}
Compilez et exécutez le programme :
gcc string_formatting.c -o string_formatting
./string_formatting
Exemple de sortie :
Name: Alice
Profile: Alice is 30 years old
Height: 5.8 meters
Name (right-aligned): Alice
Name (left-aligned): Alice
Details: Alice, 30 years, 5.8 meters
Spécificateurs de format courants :
%s: Chaînes de caractères%d: Entiers%f: Nombres à virgule flottante%.1f: Nombres à virgule flottante avec 1 décimale%10s: Alignement à droite avec une largeur de 10 caractères%-10s: Alignement à gauche avec une largeur de 10 caractères
Explorons un formatage plus avancé :
#include <stdio.h>
int main() {
// Hexadecimal and octal representations
int number = 255;
printf("Decimal: %d\n", number);
printf("Hexadecimal: %x\n", number);
printf("Octal: %o\n", number);
// Padding with zeros
printf("Padded number: %05d\n", 42);
return 0;
}
Exemple de sortie :
Decimal: 255
Hexadecimal: ff
Octal: 377
Padded number: 00042
Déterminer la longueur d'une chaîne avec strlen
Dans cette étape, vous apprendrez à utiliser la fonction strlen() pour déterminer la longueur des chaînes de caractères en C. La fonction strlen() fait partie de la bibliothèque <string.h> et offre un moyen simple de compter les caractères dans une chaîne.
Créons un nouveau fichier pour démontrer le calcul de la longueur d'une chaîne :
cd ~/project
touch string_length.c
Entrez le code suivant pour explorer strlen() :
#include <stdio.h>
#include <string.h>
int main() {
// Define strings of different lengths
char greeting[] = "Hello, World!";
char name[] = "Alice";
char empty[] = "";
// Calculate and print string lengths
printf("Greeting: %s\n", greeting);
printf("Greeting length: %lu characters\n", strlen(greeting));
printf("Name: %s\n", name);
printf("Name length: %lu characters\n", strlen(name));
printf("Empty string length: %lu characters\n", strlen(empty));
return 0;
}
Compilez et exécutez le programme :
gcc string_length.c -o string_length
./string_length
Exemple de sortie :
Greeting: Hello, World!
Greeting length: 13 characters
Name: Alice
Name length: 5 characters
Empty string length: 0 characters
Explorons un exemple plus pratique d'utilisation de strlen() :
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// Remove newline character if present
input[strcspn(input, "\n")] = 0;
// Calculate and print string length
size_t length = strlen(input);
printf("You entered: %s\n", input);
printf("String length: %lu characters\n", length);
// Demonstrate length-based operations
if (length > 10) {
printf("This is a long string!\n");
} else if (length > 0) {
printf("This is a short string.\n");
} else {
printf("You entered an empty string.\n");
}
return 0;
}
Points clés concernant strlen() :
- Renvoie le nombre de caractères avant le caractère de fin de chaîne (null terminator)
- Ne compte pas le caractère de fin de chaîne
- Fonctionne avec les tableaux de caractères et les littéraux de chaîne
- Fait partie de la bibliothèque
<string.h>, donc incluez cet en-tête - Renvoie un type
size_t(entier non signé long)
Comparer des chaînes de caractères avec strncmp
Dans cette étape, vous apprendrez à utiliser la fonction strncmp() pour comparer des chaînes de caractères en C. La fonction strncmp() vous permet de comparer un nombre spécifié de caractères entre deux chaînes.
Créons un nouveau fichier pour démontrer la comparaison de chaînes :
cd ~/project
touch string_compare.c
Entrez le code suivant pour explorer strncmp() :
#include <stdio.h>
#include <string.h>
int main() {
// Define strings for comparison
char str1[] = "Hello, World!";
char str2[] = "Hello, Everyone!";
char str3[] = "Hello, World!";
// Compare entire strings
printf("Full string comparison:\n");
int result1 = strncmp(str1, str2, strlen(str1));
int result2 = strncmp(str1, str3, strlen(str1));
printf("str1 vs str2: %d\n", result1);
printf("str1 vs str3: %d\n", result2);
// Compare first few characters
printf("\nPartial string comparison:\n");
int result3 = strncmp(str1, str2, 7);
printf("First 7 characters of str1 vs str2: %d\n", result3);
return 0;
}
Compilez et exécutez le programme :
gcc string_compare.c -o string_compare
./string_compare
Exemple de sortie :
Full string comparison:
str1 vs str2: -1
str1 vs str3: 0
Partial string comparison:
First 7 characters of str1 vs str2: 0
Créons un exemple plus pratique de comparaison de chaînes :
#include <stdio.h>
#include <string.h>
int main() {
// Password verification example
char stored_password[] = "SecretPass123";
char input_password[20];
printf("Enter password: ");
scanf("%19s", input_password);
// Compare first 10 characters of the password
int comparison = strncmp(stored_password, input_password, 10);
if (comparison == 0) {
printf("Access granted!\n");
} else {
printf("Access denied!\n");
}
return 0;
}
Points clés concernant strncmp() :
- Compare jusqu'à un nombre spécifié de caractères
- Renvoie 0 si les chaînes correspondent sur la longueur spécifiée
- Renvoie une valeur négative si la première chaîne est inférieure lexicographiquement
- Renvoie une valeur positive si la première chaîne est supérieure lexicographiquement
- Fait partie de la bibliothèque
<string.h> - Utile pour les comparaisons partielles de chaînes
Comprendre les valeurs de retour de strncmp() :
- 0 : Les chaînes sont égales sur la longueur spécifiée
- < 0 : La première chaîne précède la deuxième chaîne
0 : La première chaîne suit la deuxième chaîne
Résumé
Dans ce laboratoire, vous avez appris à définir des chaînes de caractères à la fois à l'aide de la notation des pointeurs et de la notation des tableaux locaux en programmation C. Avec la notation des pointeurs, vous pouvez créer et manipuler des chaînes de manière flexible en utilisant un pointeur sur un caractère. Avec la notation des tableaux locaux, vous avez un contrôle plus direct sur le tableau de caractères. Vous avez également appris à formater des chaînes avec printf(), à déterminer la longueur d'une chaîne avec strlen() et à comparer des chaînes avec strncmp(). Ces techniques de manipulation de chaînes sont des compétences fondamentales pour travailler avec des données textuelles en C.



