Imprimer le tableau de caractères en C

Jinku Hu 12 octobre 2023
  1. Utiliser la boucle for pour imprimer un tableau de caractères en C
  2. Utiliser printf avec le spécificateur %s pour imprimer un tableau de caractères en C
Imprimer le tableau de caractères en C

Cet article présente plusieurs méthodes pour imprimer un tableau de caractères en C.

Utiliser la boucle for pour imprimer un tableau de caractères en C

La boucle for est la solution la plus évidente si l’on veut imprimer les éléments du tableau séparément et formater la sortie avec plus de détails. Une condition préalable essentielle pour cette méthode est que nous connaissions à l’avance la longueur du tableau.

Notez que nous pouvons utiliser d’autres méthodes d’itération comme la boucle for, mais nous devons alors connaître la valeur à laquelle l’itération doit s’arrêter ; sinon, l’itération sortirait des limites en lançant le défaut de segmentation.

Dans l’exemple suivant, nous démontrons la méthode de la boucle for et nous itérions précisément 6 fois sur le tableau de six caractères.

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

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};

  printf(STR(arr1) ": ");
  for (int i = 0; i < 6; ++i) {
    printf("%c, ", arr1[i]);
  }
  printf("\b\b\n");

  exit(EXIT_SUCCESS);
}

Production :

arr1: a, b, c, d, e, f

Utiliser printf avec le spécificateur %s pour imprimer un tableau de caractères en C

La fonction printf est une fonction puissante pour la sortie formatée. Elle peut manipuler les variables d’entrée avec des spécificateurs de type et traiter les variables en conséquence.

A savoir, le tableau char a en interne la même structure que la chaîne de style C, sauf que les caractères de la chaîne de style C se terminent toujours par \0 octet pour indiquer le point final. Si nous ajoutons l’octet nul à la fin de notre tableau char, nous pouvons imprimer le tableau entier avec un appel printf d’une seule ligne.

Si l’octet nul de terminaison n’est pas spécifié et que printf est appelé avec cette méthode, le programme peut essayer d’accéder aux zones de mémoire qui entraîneront très probablement une erreur de segmentation.

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

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%s\n", arr1);
  printf("%s\n", arr2);

  exit(EXIT_SUCCESS);
}

Production :

abcdeftrnmbv
trnmbv

Comme vous pouvez le voir, lorsque nous imprimons le arr1 qui n’a pas le terminateur nul, nous obtiendrons plus de caractères jusqu’à ce que l’itération atteigne un terminateur nul - \0.

Une autre méthode pour spécialiser la fonction printf est de passer le nombre de caractères de la chaîne dans le spécificateur %s. Une façon de faire cela est de coder en dur la longueur de la chaîne de caractères avec un entier entre les symboles % et s, ou elle peut être remplacée par le symbole * pour prendre un autre argument entier des paramètres printf. Notez que les deux méthodes incluent le caractère . avant le nombre ou l’astérisque dans le spécificateur.

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

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%.6s\n", arr1);
  printf("%.*s\n", (int)sizeof arr1, arr2);

  exit(EXIT_SUCCESS);
}

Production :

abcdef
trnmbv
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 Array