Maîtrisez les types de données, les variables et l'entrée-sortie en langage C avec Visual Studio 2022

Objectifs d'apprentissage

Ce guide couvre les aspects fondamentaux du langage C pour les types de données, les variables et les opérations d'entrée-sortie. Vous apprendrez à définir des variables, utiliser les types de données courants, formater la sortie avec printf, lire l'entrée avec scanf, et comprendre la relation entre les caractères et le code ASCII, le tout dans l'environnement Visual Studio 2022.

Les variables : définition et utilité

Une variable est un espace mémoire nommé utilisé pour stocker des données qui peuvent changer pendant l'exécution du programme. Par exemple, pour enregistrer un numéro de port réseau, calculer des valeurs ou stocker des entrées utilisateur.

Format de définition d'une variable

type_nom variable;
type_nom variable = valeur_initiale;

Règles de nommage (obligatoires)

  • Composée uniquement de lettres, chiffres et underscores.
  • Ne peut pas commencer par un chiffre.
  • Sensible à la casse.
  • Éviter les mots-clés réservés comme int, char, return.
  • Utiliser des noms significatifs, par exemple portReseau, compteur, adresseIP.

Types de données fondamentaux en C

Types entiers

Type Description Taille (octets) Plage approximative
char Caractère ou petit entier 1 -128 à 127
short Entier court 2 -32768 à 32767
int Entier standard (le plus courant) 4 -2 147 483 648 à 2 147 483 647
long Entier long 4 ou 8 Plage étendue
long long Entier très long 8 Plage très étendue

En contexte réseau, les champs comme les numéros de protocole ou les ports sont souvent stockés avec int ou unsigned int.

Types à virgule flottante

Type Description Taille (octets) Précision
float Simple précision 4 6 à 7 chiffres significatifs
double Double précision 8 15 à 16 chiffres significatifs

Types caractère

Le type char est en réalité un entier d'un octet, utilisé pour stocker des caractères selon la table ASCII. Les caractères sont délimités par des apostrophes, par exemple 'X' ou '\n'.

Sortie formatée avec printf

La fonction printf permet d'afficher des données formatées. Les spécificateurs de format doivent correspondre aux types de données.

Spécificateurs courants

  • %d pour int
  • %c pour char
  • %f pour float et double
  • %u pour les entiers non signés
  • %x pour l'affichage hexadécimal (souvent utilisé en réseau)
  • %s pour les chaînes de caractères

Exemple de code

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int portReseau = 443;
    char lettreInitiale = 'B';
    double debitConnexion = 99.9;

    printf("Port réseau : %d\n", portReseau);
    printf("Lettre : %c\n", lettreInitiale);
    printf("Débit : %.2f Mbps\n", debitConnexion);

    return 0;
}

Ici, %.2f spécifie l'affichage avec deux décimales, utile pour les calculs réseau comme les mesures de débit.

Entrée utilisateur avec scanf

La fonction scanf lit les données saisies au clavier et les stocke dans des variables.

Format de base

scanf("spécificateur", &variable);

Il est essentiel d'utiliser l'opérateur & pour obtenir l'adresse de la variable ; sinon, le programme risque de planter.

Exemple complet

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int premierNombre, deuxiemeNombre;

    printf("Entrez deux nombres entiers : ");
    scanf("%d %d", &premierNombre, &deuxiemeNombre);

    printf("Somme : %d\n", premierNombre + deuxiemeNombre);

    return 0;
}

Problèmes courants avec Visual Studio 2022

  • L'avertissement scanf unsafe peut être résolu en ajoutant #define _CRT_SECURE_NO_WARNINGS 1 au début du fichier.
  • Si le programme ferme immédiatement après l'exécution, utilisez Ctrl + F5 pour l'exécuter sans débogage.
  • Assurez-vous que les types d'entrée correspondent aux spécificateurs pour éviter des comportements inattendus.

Caractères et table ASCII

En interne, les caractères char sont stockés sous forme de valeurs numériques selon la table ASCII. Par exemple :

char symbole = 'A';
printf("Caractère : %c\n", symbole);
printf("Code ASCII : %d\n", symbole); // Affiche 65

En réseau, les données des trames Ethernet ou les indicateurs de protocole TCP/IP sont souvent représentés en hexadécimal ou comme valeurs ASCII.

Cas pratique : calcul de la longueur du masque de sous-réseau

Voici un exemple intégrant les concepts précédents pour calculer le nombre d'hôtes disponibles à partir d'un préfixe de masque.

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int prefixeMasque;
    printf("Entrez le préfixe du masque de sous-réseau : ");
    scanf("%d", &prefixeMasque);

    printf("Préfixe configuré : /%d\n", prefixeMasque);
    printf("Nombre d'hôtes disponibles approximatif : 2^%d - 2\n", 32 - prefixeMasque);

    return 0;
}

Ce programme illustre l'utilisation des variables entières, de printf et scanf dans un cotnexte réseau.

Étiquettes: C langage C types de données variables printf

Publié le 4 juin à 23h41