PRREL

Corrections

Mémo / classicos

Obtenir la taille d'une chaîne

// Une chaîne "bonjour" est représenté sous forme de tableau
// en mémoire, avec un caractère '\0' pour spécifier la fin
// de la chaîne :
//
// +---+---+---+---+---+---+---+----+
// | b | o | n | j | o | u | r | \0 |
// +---+---+---+---+---+---+---+----+

char *chaine = "bonjour";
int taille = 0;

while (b[taille] != '\0')
  taille++;

Copie de deux chaînes dans une

int i, j;

char *prenom = "Mouloud ";
char *nom = "Dupont";
char nomComplet[15];

int taillePrenom = 0;
int tailleNom = 0;

// On calcule la taille de chaque chaîne
while (prenom[taillePrenom] != '\0')
  taillePrenom++;

while (nom[tailleNom] != '\0')
  tailleNom++;

// On copie les chaînes
for (i = 0; i < taillePrenom; i++)
  nomComplet[i] = prenom[i];

// Après cette boucle, `nomComplet` a cette tête :
//
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
// | M | o | u | l | o | u | d |   | … | … | … | … | … | … | … |
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

for (j = 0; j < tailleNom; j++, i++) // On incrémente j *et* i.
  nomComplet[i] = nom[j];

// `nomComplet` contient maintenant :
//
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
// | M | o | u | l | o | u | d |   | D | u | p | o | n | t | … |
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

nomComplet[i] = '\0';


// `nomComplet` contient maintenant :
//
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+----+
// | M | o | u | l | o | u | d |   | D | u | p | o | n | t | \0 |
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+----+