2010-11-12 5 views
2

J'ai une chaîne, comme "100110000111001100010001100011001100100".Récupère la queue d'une chaîne en C

Si je dois obtenir la queue de cette chaîne, ce qui signifie tout sauf le premier élément, dois-je copier chaque char du nouveau tableau, à partir du deuxième élément (O (n)),

ou y at-il un moyen plus rapide de le faire, comme en quelque sorte magiquement déplacer les pointeurs 1 place vers la droite ou une fonction intégrée?

Répondre

4

Vous pouvez simplement créer un caractère * pointant vers l'index dont vous avez besoin.

char *p = "100110000111001100010001100011001100100"; 
char *tail = &p[1]; //&p[1] is the same as p+1 
printf("p = %s\ntail = %s\n",p,tail); 
5

Si vous n'avez pas besoin d'apporter de modifications à la chaîne, vous pouvez simplement donner le pointeur d'origine plus 1, sinon vous devrez copier.

1

Rien de magique à ce sujet. Un pointeur vers une chaîne, comme un pointeur vers un tableau, est juste l'adresse du premier élément.

arithmétique de pointeur de base, prenez votre pointeur existant, l'incrémenter (p++), et vous avez un pointeur sur la "queue" de votre chaîne.

Questions connexes