web-dev-qa-db-fra.com

Comment obtenir le nième caractère d'une chaîne?

J'ai une chaîne,

char* str = "HELLO"

Si je voulais obtenir juste le E de cela, comment ferais-je cela?

14
Aspyn
char* str = "HELLO";
char c = str[1];

Gardez à l'esprit que les tableaux et les chaînes en C commencent l'indexation à 0 plutôt qu'à 1, donc "H" est str[0], "E" est str[1], le premier "L" est str[2] etc.

23
Rei Miyasaka

Vous feriez:

char c = str[1];

Ou même:

char c = "Hello"[1];

edit: mis à jour pour trouver le "E".

13
Graham Perks

La notation matricielle et l'arithmétique des pointeurs peuvent être utilisées de manière interchangeable en C/C++ (ce n'est pas vrai pour TOUS les cas mais au moment où vous y arrivez, vous trouverez les cas vous-même). Ainsi, bien que str soit un pointeur, vous pouvez l'utiliser comme s'il s'agissait d'un tableau comme ceci:

char char_E = str[1];
char char_L1 = str[2];
char char_O = str[4];

...etc. Vous pouvez également "ajouter" 1 à la valeur du pointeur à un caractère str qui pointera ensuite vers le deuxième caractère de la chaîne. Ensuite, vous pouvez simplement faire:

str = str + 1; // makes it point to 'E' now
char myChar =  *str;

J'espère que ça aide.

4
mtahmed