2010-06-17 5 views
1

En javascript, je suis habitué à pouvoir choisir n'importe quel caractère d'une chaîne comme "exm [2]" et il me renvoie le troisième caractère d'une chaîne. En C est-il un moyen de faire cela ou quelque chose sans une fonction qui nécessite un tampon?Caractère C du raccourci

Répondre

6

Depuis en C « chaînes » sont simplement des tableaux de caractères, vous pouvez faire la même chose là aussi:

char* foo = "Hello World"; 
printf("%c", foo[4]); // prints o 

Plus au point, une « chaîne » est juste un pointeur vers le premier élément de un tableau de caractères se terminant par un caractère zéro ('\ 0'). Fonctions de chaîne juste itérer jusqu'à ce qu'ils trouvent que le caractère nul (ce qui est la raison pour laquelle ils ont du plaisir quand il est pas là) et l'indexation dans un tableau est juste une façon élégante d'écrire un peu d'arithmétique de pointeur:

foo[4] 

se transforme en

*(foo + 4) 
+0

Comment puis-je obtenir le caractère 1 que je veux sans un octet de fin juste après? – Jay

+1

@Jay: Vous le faites déjà. * Les chaînes * ont des terminaisons NULL. * caractères * ne le font pas. – Artelius

+0

+1 C'est la réponse. Vous n'avez pas besoin de plus, sauf pour ajouter que les chaînes sont indexées à partir de 0, comme je suis sûr que vous le savez. Et, si vous voulez y regarder de plus près, [] n'est qu'une forme de référencement de pointeur. – Mawg