< 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 >