9.5 Manipulation de chaînes de caractères

Le fichier en-tête string.h contient des déclarations de fonctions permettant la manipulation de chaînes de caractères :

Le type size_t est un alias du type unsigned long.

Exemple

 
#include <stdio.h>
#include <string.h>
main(int argc, char **argv)
{
   char *parm1, *parm2, buffer[BUFSIZ];
   if (argc != 3) usage(argv[0]);
   parm1 = strdup(argv[1]);
   parm2 = strdup(argv[2]);
   strcat(strcpy(buffer, "Resultat de la "
                         "concatenation : "),
          parm1);
   strcat(strcat(buffer, parm2), "\n");
   printf("%s", buffer);
   sprintf(buffer, "%s%s%s\n", "Resultat de la "
                               "concatenation : ",
                                parm1, parm2);
   printf("%s", buffer);
   free(parm1); free(parm2);
}
void usage (char *s) {
   fprintf(stderr, "usage : %s ch1 ch2.\n", s);
   exit(1);
}

Il existe d'autres fonctions qui agissent sur des tableaux de caractères plutöt que des chaînes de caractères :

Exemple

 
#include <stdio.h>
#include <string.h>
main()
{
   char  buffer[100];
   char  tab[] = "Voici\0une chaine qui"
                 "\0\0contient\0des"
                 "\0caracteres \"null\".";
   char *p, *ptr;
   int   taille = sizeof tab / sizeof tab[0];
   int   n;
  memset(buffer, ' ', 100);
   memcpy(buffer, tab, taille);
   n = --taille;
   for (p=ptr=tab; p=memchr(ptr, '\0', n);)
   {
      *p = ' ';
      n -= p - ptr + 1;
      ptr = ++p;
   }
   printf("%s\n", buffer);
   printf("%.*s\n", taille, tab);
}


Pr. Marc BUFFAT
buffat@ufrmeca.univ-lyon1.fr
2004-12-01