Piscine 42 C00 : les exercices corrigés

Allez, on se jette dans le grand bain !

Le projet C00 est là pour te familiariser avec les bases de la programmation en langage C.  Tu vas apprendre à manipuler les fonctions de base, les boucles, les conditions, et à gérer la sortie standard. Découvres les solutions détaillées et commentées pour le projet C00 de la Piscine de l’école 42.

C00 ex00 : ft_putchar

🎯 Objectif de l'exercice

L’objectif pour toi va être d’écrire une fonction qui permet d’afficher un caractère passé en paramètre. Cette fonction servira de base pour comprendre comment interagir avec les entrées/sorties en C, et plus précisément comment utiliser la fonction write pour afficher du texte.

🎓 Notions essententielles

  • Prototypes de fonctions en C : comprendre comment déclarer une fonction en C.
  • La fonction write : apprendre à utiliser cette fonction pour écrire des données, ici un caractère, dans la sortie standard (l’écran).

💻 Fonctionnement de ft_putchar

La fonction doit être déclarée de la manière suivante : void ft_putchar(char c);.

👉 Cela signifie que la fonction ne retourne rien (void) et prend un seul paramètre de type char.

La fonction write est utilisée pour afficher un caractère. La syntaxe à retenir pour cet exercice est simplement : write(1, &c, 1);

write prend trois paramètres : le premier pour spécifier où afficher (ici l’écran), le second pour dire quoi afficher (le caractère passé en paramètre), et le troisième pour indiquer combien de caractères à afficher (ici 1).

✅ Le code de la fonction :

				
					void	ft_putchar(char c)
{
	write(1, &c, 1);
}
				
			

💡Fonction Main pour tester ft_putchar

Pour être sûr que ta fonction ft_putchar remplisse son rôle, tu peux rajouter une fonction main . C’est une bonne pratique pour t’assurer que ta fonction fonctionne correctement.

Attention, le sujet spécifie que tu dois rendre une fonction et non pas un programme. Une fois que tu as testé ta fonction, tu peux placer ton main() entre commentaires pour qu’elle ne soit pas lue par la moulinette et que seule ta fonction ft_putchar soit testée.

				
					#include <unistd.h>

void	ft_putchar(char c)
{
	write(1, &c, 1);
}

int	main(void)
{    
	ft_putchar('a');
}
				
			

C00 ex01 : ft_print_alphabet

🎯 Objectif de l'exercice ft_print_alphabet

L’objectif de cet exercice est de créer une fonction qui affiche toutes les lettres de l’alphabet en minuscule, dans l’ordre croissant, sur une seule ligne. On va utiliser une boucle pour répéter une opération simple plusieurs fois.

🎓 Notions essententielles

  • Les boucles en C : La boucle while ou for (bien que for soit interdit par la Norme ‼️) pour parcourir les lettres de l’alphabet.
  • Les types de données char pour comprendre que les caractères sont représentés par des valeurs numériques en ASCII.
  • La fonction write  déjà vue dans l’exercice précédent, que l’on utilise ici pour afficher chaque lettre.

💻 Fonctionnement de ft_print_alphabet

Prototype de la fonction :

La fonction doit être déclarée comme suit : void ft_print_alphabet(void);.

				
					void ft_print_alphabet(void);
				
			

👉 Elle ne prend aucun paramètre et ne retourne rien.

Initialisation du caractère de départ :

En C, les caractères sont représentés par des valeurs ASCII. Par exemple, la lettre 'a' correspond à la valeur ASCII 97 et 'z' à 122.

On commence donc par initialiser une variable char à 'a'.

				
					char letter;

    letter = 'a';
    
				
			

💬 Remarque : on pourrait très bien déclarer et initialiser la variable sur une seule ligne :     char letter = ‘a’ … sauf que la norme de 42 ne le permet pas ‼️

Création de la boucle :

Pour afficher toutes les lettres de l’alphabet, on va utiliser une boucle while. Elle doit continuer tant que la variable char n’a pas dépassé 'z'.

Affichage des caractères :

À chaque itération de la boucle, la fonction write est appelée pour afficher la lettre actuelle. Ensuite, la variable char est incrémentée pour passer à la lettre suivante.

✅ Le code de ft_print_alphabet :

				
					void ft_print_alphabet(void)
{
    char letter;

    letter = 'a';
    while (letter <= 'z')
    {
        write(1, &letter, 1);
        letter++;
    }
}
				
			

💡 Fonction Main pour tester ft_print_alphabet

				
					#include <unistd.h>

int	main(void)
{
	ft_print_alphabet ();
	return (0);
}
				
			

C00 ex02 : ft_print_reverse_alphabet

🎯 Objectif de l'exercice ft_print_reverse_alphabet

Ici, l’objectif est de créer une fonction qui affiche toutes les lettres de l’alphabet en minuscule, mais cette fois-ci dans l’ordre décroissant, sur une seule ligne. L’idée est la même que pour l’exercice précédent (utiliser une boucle) mais cette fois on va mettre en place une décrémentation.

🎓 Notions essententielles

  • Les boucles : utilisation d’une boucle while pour parcourir les lettres de l’alphabet en ordre décroissant.
  • Les types de données char et comprendre que les caractères peuvent être décrémentés, et qu’ils suivent l’ordre ASCII.
  • La fonction write : déjà utilisée dans les exercices précédents pour afficher les caractères.

💻 Fonctionnement de ft_print_reverse_alphabet

Prototype de la fonction :

La fonction doit être déclarée comme suit : void ft_print_reverse_alphabet(void);. Elle ne prend aucun paramètre et ne retourne rien.

Initialisation du caractère de départ :

Ici, on va commencer par la dernière lettre de l’alphabet, 'z', qui correspond à la valeur ASCII 122.

Création de la boucle :

On utilise une boucle while pour parcourir les lettres de l’alphabet de 'z' à 'a'. La boucle continue tant que la variable char n’a pas atteint 'a'.

Affichage des caractères :

À chaque itération de la boucle, la fonction write est appelée pour afficher la lettre actuelle. Ensuite, la variable char est décrémentée pour passer à la lettre précédente.

✅ Le code de ft_print_reverse_alphabet :

				
					void ft_print_reverse_alphabet(void)
{
    char letter;

    letter = 'z';
    while (letter >= 'a')
    {
        write(1, &letter, 1);
        letter--;
    }
}
				
			

💡 Fonction Main pour tester ft_print_alphabet

				
					#include <unistd.h>

int	main(void)
{
	ft_print_reverse_alphabet();
	return (0);
}
				
			

C00 ex03 : ft_print_numbers

🎯 Objectif de l'exercice ft_print_numbers

Dans cet exercice, on te demande de créer une fonction qui affiche tous les chiffres de 0 à 9 sur une seule ligne, dans l’ordre croissant.

🎓 Notions essententielles

  • Les boucles en C : Utilisation d’une boucle while pour parcourir les chiffres de 0 à 9.
  • Les types de données char : pour comprendre que les chiffres peuvent être représentés en tant que caractères (par exemple, '0' correspond à 48 en ASCII).
  • La fonction write : déjà utilisée dans les exercices précédents pour afficher les caractères.

💻 Fonctionnement de ft_print_numbers

Prototype de la fonction :

La fonction doit être déclarée comme suit : void ft_print_numbers(void);. Elle ne prend aucun paramètre et ne retourne rien.

Initialisation du caractère de départ :

Ici, on va commencer par le caractère représentant le chiffre '0', qui correspond à la valeur ASCII 48.

Création de la boucle :

On se sert d’une boucle while pour parcourir les chiffres de '0' à '9'. Elle doit continuer tant que la variable char n’a pas dépassé '9'.

Affichage des chiffres :

À chaque itération de la boucle, la fonction write est appelée pour afficher le chiffre actuel. Ensuite, la variable char est incrémentée pour passer au chiffre suivant.

✅ Le code de ft_print_numbers :

				
					void ft_print_numbers(void)
{
    char number;

    number = '0';
    while (number <= '9')
    {
        write(1, &number, 1);
        number++;
    }
}
				
			

💡 Fonction Main pour tester ft_print_numbers

				
					#include <unistd.h>

int	main(void)
{
	ft_print_numbers ();
	return (0);
}
				
			

📋 Les exercices de C00 :

Les projets C de la piscine 42 :

Retour en haut