Texte formaté pour l'impression en C

Jinku Hu 12 octobre 2023
  1. Utiliser la fonction printf avec le spécificateur %s pour imprimer des chaînes de caractères
  2. Utiliser la fonction printf avec le spécificateur %i pour imprimer des nombres entiers
Texte formaté pour l'impression en C

Cet article présente plusieurs méthodes d’impression de texte formaté pour consoles en C.

Utiliser la fonction printf avec le spécificateur %s pour imprimer des chaînes de caractères

La fonction printf est l’une des parties les plus utilisées de la bibliothèque standard d’entrées/sorties. En fait, il existe toute une famille de fonctions printf spécialisées pour de multiples scénarios, qui sont toutes documentées en détail sur cette page. Dans cet article, nous ne présentons que la sortie formatée à l’aide de la fonction printf.

printf est unique en ce qu’elle peut prendre un nombre variable d’arguments. En effet, les paramètres de la fonction peuvent être divisés en deux parties, la chaîne de format et les autres arguments. La chaîne de format spécifie la partie formatage de la fonction, et elle comprend des caractères ordinaires et des spécificateurs commençant par le symbole %. Les formes les plus simples sont démontrées dans l’exemple suivant, où printf prend la chaîne elle-même comme seul argument dans le premier appel, et le second appel déclare un seul spécificateur % dans la chaîne de format suivi de l’argument variable de la chaîne.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("String literal\n");
  printf("%s\n", str1);

  exit(EXIT_SUCCESS);
}

Production :

String literal
fabulae mirabiles

Une autre caractéristique utile de la chaîne de format est de spécifier le nombre de caractères à afficher à partir de l’argument chaîne qui est passé à la fonction. L’exemple de code suivant montre deux solutions à ce problème.

La première consiste à placer l’entier indiquant le nombre de caractères entre les symboles % et s ; ainsi, seuls 6 caractères sont imprimés à partir de l’argument chaîne donné. Le second appel à printf met le caractère * à la place et laisse l’utilisateur passer la valeur intégrale d’un des arguments. Le côté positif de cette dernière méthode est que la valeur peut être calculée au moment de l’exécution, alors que la première méthode exige que la valeur soit codée en dur. Notez que, dans les deux cas, le symbole . après le symbole % est nécessaire.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("%.6s\n", str1);
  printf("%.*s \n", 6, str1);

  exit(EXIT_SUCCESS);
}

Production :

fabula
fabula

Utiliser la fonction printf avec le spécificateur %i pour imprimer des nombres entiers

printf peut imprimer des entiers avec différentes représentations. Les méthodes les plus courantes consistent à modifier la base dans laquelle les nombres entiers sont affichés. Les arguments des entiers peuvent être désignés par le spécificateur %i ou %d. Les nombres positifs et négatifs sont automatiquement formatés, sauf que les nombres positifs ne sont pas affichés avec le signe plus, et ils peuvent être inclus avec le spécificateur explicite %+i. Les nombres hexadécimaux et octals peuvent être affichés avec les spécifications correspondantes %x et %o. Le spécificateur %X affiche les nombres hexadécimaux avec un formatage en majuscules.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("%i %d %.6i %+i %i\n", 11, 22, 12, 41, -31);
  printf("%.4x %x %X %#x\n", 126, 125, 125, 100);
  printf("%.4o %o\n", 8, 11);

  exit(EXIT_SUCCESS);
}

Production :

11 22 000012 +41 -31
007e 7d 7D 0x64
0010 13
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C IO