< Les tableaux | TutoCFrench | Les pointeurs >
Notions :
\0
sizeof
strlen, strcpy, strcmp, etc.).
Une chaîne de caractère est tout simplement un tableau de caractères dont le dernier élément est le caractère '\0' appelé aussi NULL :
char ma_chaine[] = {'h', 'e', 'l', 'l', 'o', '\0'};
Nous savons comment affecter un tableau. Pour les chaînes de caractères, il y a une méthode beaucoup plus simple : l'utilisation des chaînes littérales. Une chaîne littérale est une suite de caractères entre guillemets :
char ch[] = "hello"; /* tableau de 6 caracteres (avec '\0') */
La fonction printf() et l'indicateur de format %s permettent d'affichent une chaîne passée en argument :
char ch[] = "hello";
printf("%s world !\n", ch);
La fonction scanf() et l'indicateur de format %s permettent de saisir une chaîne. Nous avons déjà vu scanf(), mais les tableau sont des cas particuliers et il n'est pas besoin de mettre le caractère & devant le nom :
char ch[512];
scanf("%s", ch); /* Attention : il ne faut pas ecrire &ch ! */
Une chaîne est un tableau, on ne peut donc réaliser directement une affectation ou une comparaison.
Pour copier une chaîne dans un tableau, on utilise la fonction strcpy() :
char src[] = "hello";
char dst[512];
strcpy(dst, src);
printf("%s\n", dst);
La fonction strcmp() permet de comparer deux chaînes.
La fonction strlen() sert à mesurer la longueur d'une chaîne (caractère nul non compris) :
#include <stdio.h>
#include <string.h>
int main()
{
char msg[] = "hello";
printf("'%s' fait %d caractères\n", msg, strlen(msg));
return 0;
}
#include <stdio.h>
int strlen(char ch[])
{
int i = 0;
while (ch[i] != '\0')
i++;
return i;
}
int main()
{
char ch[512];
scanf("%s", ch);
printf("%d\n", strlen(ch));
return 0;
}
int strcpy(char dst[], char src[])
{
int i = 0;
while ((dst[i] = src[i]) != '\0')
i++;
return i;
}
#include <stdio.h>
#include <string.h>
void reverse(char dst[], char src[])
{
int i, j;
j = 0;
i = strlen(src) - 1;
while (i>-1) {
dst[j] = src[i];
i--;
j++;
}
dst[j] = '\0';
}
int main()
{
char s[512];
char d[512];
scanf("%s", s);
reverse(d, s);
printf("%s\n", d);
return 0;
}
< Les tableaux | TutoCFrench | Les pointeurs >