Piscine 42 C04 : les exercices corrigés

C04 te présente des fonctions utilitaires essentielles pour manipuler les chaînes de caractères et les nombres. Ce module t’apprend aussi à interagir avec l’utilisateur via des fonctions de sortie, comme l’affichage de chaînes et de nombres. Découvres ci-dessous les solutions détaillées et commentées pour le projet C04 de la Piscine de l’école 42. 

C04 ex00 : ft_strlen

🎯 Objectif de ft_strlen

L’objectif de cet exercice est d’écrire une fonction qui compte le nombre de caractères dans une chaîne de caractères et qui retourne ce nombre. Cette fonction doit reproduire le comportement de la fonction standard strlen en C.

🎓 Notions essententielles

  • Les chaînes de caractères en C : Comprendre qu’une chaîne de caractères est un tableau de char se terminant par un caractère nul ('\0').
  • Les pointeurs : Utiliser des pointeurs pour parcourir la chaîne de caractères.
  • Les boucles : Utiliser une boucle pour parcourir la chaîne jusqu’à rencontrer le caractère nul.

💻 Fonctionnement de ft_strlen

Prototype de la fonction :

La fonction doit être déclarée comme suit : int ft_strlen(char *str);. Elle prend un seul paramètre, un pointeur vers une chaîne de caractères, et renvoie un entier représentant la longueur de la chaîne (c’est-à-dire le nombre de caractères avant le caractère nul '\0').

Parcours de la chaîne :

La fonction doit parcourir la chaîne de caractères en utilisant une boucle. À chaque itération, on incrémente un compteur pour compter chaque caractère jusqu’à ce que le caractère nul ('\0') soit rencontré.

Retourner la longueur :

Une fois la fin de la chaîne atteinte, la fonction renvoie le compteur, qui représente la longueur de la chaîne.

✅ Le code de ft_strlen :

				
					int ft_strlen(char *str)
{
	int len;

	len = 0;
	while (str[len] != '\0')
	{
    	len++;
	}
	return (len);
}

				
			

💡Fonction Main pour tester ft_strlen

				
					#include<stdio.h>

int main(void)
{
	char str[] = "Piscineux";
	int length;

	length = ft_strlen(str);
	printf("Le nombre de caracteres de '%s' est : %d\n", str, length);
	return (0);
}
				
			

C04 ex01 : ft_putstr

🎯 Objectif de ft_putstr

L’objectif de cet exercice est d’écrire une fonction qui affiche une chaîne de caractères sur la sortie standard (l’écran), caractère par caractère. Cette fonction doit reproduire le comportement de la fonction puts mais sans ajouter de caractère de fin de ligne (\n) à la fin de la chaîne.

🎓 Notions essententielles

  • Les chaînes de caractères en C : Comprendre qu’une chaîne de caractères est un tableau de char se terminant par un caractère nul ('\0').
  • La fonction write : Utilisation de cette fonction pour afficher des caractères. write est la seule fonction autorisée pour cet exercice.
  • Les boucles : Utiliser une boucle pour parcourir la chaîne de caractères et afficher chaque caractère.

💻 Fonctionnement de ft_putstr

Prototype de la fonction :

La fonction doit être déclarée comme suit : void ft_putstr(char *str);. Elle prend un seul paramètre, un pointeur vers une chaîne de caractères, et ne renvoie rien.

Parcours et affichage des caractères :

La fonction doit parcourir la chaîne de caractères avec une boucle, de manière similaire à ft_strlen, sauf qu’ici, chaque caractère est affiché à l’aide de la fonction write.

Utilisation de la fonction write :

write prend trois paramètres : le descripteur de fichier (1 pour la sortie standard), un pointeur vers les données à écrire (ici, un caractère), et le nombre d’octets à écrire (1 pour un caractère). Pour chaque caractère de la chaîne, on appelle write avec ces paramètres.

✅ Le code de ft_putstr :

				
					#include<unistd.h>

void ft_putstr(char *str)
{
	int i;

	i = 0;
	while (str[i])
	{
    	write(1, &str[i], 1);
    	i++;
	}
}
				
			

💡Fonction Main pour tester ft_putstr

				
					int main(void) 
{ 
ft_putstr("Good Job piscineux!\n"); 
return 0; 
}
				
			

C04 ex02 : ft_putnbr

🎯 Objectif de ft_putnbr

L’objectif de cet exercice est d’écrire une fonction qui affiche un nombre entier passé en paramètre. La fonction doit être capable d’afficher la totalité des valeurs possibles pour une variable de type int, y compris les valeurs négatives.

🎓 Notions essententielles

  • Les nombres en C : Comprendre la représentation des nombres entiers en C, y compris les nombres négatifs.
  • La récursion : Utiliser la récursion pour décomposer l’affichage d’un nombre entier en affichant les chiffres un par un.
  • La fonction write : Utiliser cette fonction pour afficher les caractères correspondant aux chiffres du nombre.

💻 Fonctionnement de ft_putnbr

Prototype de la fonction :

La fonction doit être déclarée comme suit : void ft_putnbr(int nb);. Elle prend un seul paramètre, un entier nb, et ne renvoie rien.

Gestion des valeurs négatives :

Si le nombre est négatif, la fonction doit d’abord afficher un signe '-', puis convertir le nombre en positif pour simplifier l’affichage des chiffres. Une exception est faite pour -2147483648 (la plus petite valeur d’un int en C), qui doit être traitée séparément en raison de la limite de la représentation des nombres en C.

Affichage des chiffres :

Le nombre est décomposé chiffre par chiffre, de droite à gauche, en utilisant l’opération modulo (%) pour extraire le dernier chiffre, puis la division (/) pour retirer ce chiffre du nombre. La fonction utilise la récursion pour d’abord afficher les chiffres les plus significatifs.

✅ Le code de ft_putnbr :

				
					#include <unistd.h>

void ft_putnbr(int nb)
{
    if (nb == -2147483648)
    {
        write(1, "-2147483648", 11);
        return;
    }
    if (nb < 0)
    {
        write(1, "-", 1);
        nb = -nb;
    }
    if (nb >= 10)
    {
    	ft_putnbr(nb / 10);
    	ft_putnbr(nb % 10);
	}
	else
	{
    	ft_putchar(nb + '0');
	}
}
				
			

💡Fonction Main pour tester ft_putnbr

				
					int main(void)
{
    ft_putnbr(42);         // Devrait afficher "42"
    write(1, "\n", 1);
    ft_putnbr(-42);        // Devrait afficher "-42"
    write(1, "\n", 1);
    ft_putnbr(0);          // Devrait afficher "0"
    write(1, "\n", 1);
    ft_putnbr(-2147483648); // Devrait afficher "-2147483648"
    write(1, "\n", 1);
    return (0);
}
				
			

📋 Les exercices de C04 :

Les projets C de la piscine 42 :

Retour en haut