Les chaines de caractères C sont des tableaux de caractères, terminés par un caractères ayant pour valeur 0 => il s'agit du caractère codé ' ', dont la valeur ASCII est 0, et non pas du caractère affichable '0', dont le code ASCII est 48.
=> voici ce qu'est une chaine de caractères : {'A', 'B', 'C', 0}
(le 0 final étant en fait ' ' !!! Mais c'est la même chose, puisque ' ' a pour valeur 0 !!!
Quand tu fais une copie avec strcpy, par exemple strcpy(ma_str, "salut")
le programme va faire :
ma_str[0] = 's';
ma_str[1] = 'a';
ma_str[2] = 'l';
ma_str[3] = 'u';
ma_str[4] = 't';
Et il va ensuite faire : ma_str[5] = ' ';
Si la dernière étape n'est pas faite, la chaine n'aura pas de fin => ENORME risque d'erreurs diverses qd tu voudra l'utiliser !!!
En fait, on ne peut pas faire
ma_str = "salut";
tt simplement parce que "salut" n'est pas une variable, mais un tableau... autrement dit, une suite de variables ayant pour valeurs les codes ASCII de chacun des caractères (plus le zéro final !)
De plus, ma_str représente en fait l'adresse du début de l'espace alloué par le programme pour stocker la chaine de caractères, qd tu as fait
char ma_str[10]; // ou quelque chose comme ça !
=> tu ne peux pas envoyer tt un tableau là où il n'y a qu'une adresse !!!
IL faut que tu envoie un caractère à l'emplacement pointé par l'adresse de la STR, un autre à l'adresse de la STR+11 etc..
Je sais, c pas trop clair non plus, mais c en gros comme ça que ça marche.
=> De tte façon, si tu comprend pas vraiment, admet le... c le plus simple
