Programmation en C :

9. Les tableaux

codecommentaire
/* prog9a.c */
#include <stdio.h>
int i;
int T[10];

main() {
  /* construction du tableau */
  for (i=0;i<10;i++) T[i]=i*i;
  /* affichage du tableau */
  for (i=0;i<10;i++) printf("T[%d]=%d\n",i,t[i]);
}
La taille (nombre de valeurs) d'un tableau est indiquée dans la déclaration de la variable après le nom de la variable.

N.B. En C, l'indiçage se fait impérativement à partir de 0. Il faut veiller très soigneusement à ne pas dépasser la limite de taille du tableau (T[10] n'existe pas).
/* prog9b.c */
#include <stdio.h>
#define taille 5

int i, n;
int T[taille];

main() {
  /* saisie des valeurs du tableau */
  for (i=0;i<taille;i++) {
    printf("T[%d]=? ",i);
    scanf("%d",&n);
    T[i]=n;
  }
  /* Affichage du tableau */
  for (i=0;i<taille;i++)
    printf("T[%d]=%d\n",i,T[i]);
}
La macro-instruction #define permet de fixer une valeur pour tout le programme.

Remarque. Une déclaration de constante place la valeur correspondante dans l'exécutable. Au contraire, cette macro-instruction remplace le nom par la valeur correspondante avant la compilation du code source.
/* prog9c.c */
#include <stdio.h>
#define n 3
#define p 4

int i,j;
float x;
float T[n][p]={0};
int U[3]={5,10,15};
int V[2][3]={{1,2,3},{5,10,15}};

main() {
  /* saisie des valeurs du tableau */
  for (i=0;i<n;i++)
    for (j=0;j<p;j++) {
      printf("T[%d][%d]=? ",i,j);
      scanf("%f",x);
      T[i][j]=x;
    }
  /* affichage du tableau */
  for (i=0;i<n;i++)
    for (j=0;i<p;j++)
      printf("T[%d][%d]=%f\n",i,j,T[i][j]);
}
On peut créer des tableaux à plusieurs dimensions.

Un tableau peut être initialisé lors de sa déclaration, soit en précisant toutes ses valeurs (entre accolades), soit en mettant 0 dans toutes ses cases (écriture simplifiée {0}).
Remarque. La plupart des systèmes réalisent par défaut l'initialisation à 0, sans qu'il soit donc utile de le préciser.
/* prog9d.c */
#include <stdio.h>
#define n 6
#define p 16

int i,j;
char T[8][16];

main() {
  /* Exemple : affichage des codes ASCII */
  for (i=0;i<n;i++)
    for (j=0;j<p;j++)
      T[i][j]=(char) (p*(i+2)+j);
  printf("table ASCII :\n");
  printf("    |");
  for (j=0;j<p;j++) printf("%3d",j);
    printf("\n");
  for (j=0;j<3*p+6;j++) printf("-");
    printf("\n");
  for (i=0;i<n;i++) {
    printf("%3d | ",i*32);
    for (j=0;j<p;j++)
    printf(" %c ",T[i][j]);
    printf("\n");
  }
  for (j=0;j<3*p+6;j++) printf("-");
}
Une gestion rigoureuse des indices est fondamentale.
L'utilisation de #define permet de savoir à tout moment quelles sont les limites du tableau.

Ce programme affichera :

table ASCII :
    |  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
------------------------------------------------------
  0 |     !  "  #  $  %  &  '  (  )  *  +  ,  -  .  / 
 32 |  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ? 
 64 |  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O 
 96 |  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _ 
128 |  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o 
160 |  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~    
------------------------------------------------------