J'ai rencontré un petit problème et j'ai besoin d'aide:
Si j'ai un tampon alloué de caractères et que j'ai un point de départ et des points de départ quelque part dans ce tampon et que je veux la longueur entre ces deux points, comment Puis-je le trouver? p>
IE p> merci p> p> p>
4 Réponses :
Il ne s'agit que du pointeur ultérieur moins le pointeur antérieur.
int main(int argc, char* argv[]) { char buffer[] = "Its a small world after all"; char* start = buffer+6; // "s" in SMALL char* end = buffer+16; // "d" in WORLD int length = end - start; printf("Start is: %c\n", *start); printf("End is: %c\n", *end); printf("Length is: %d\n", length); }
Vous n'avez pas besoin de vous lancer vers INT - c'est très dangereux, car INT est signé afin que vous finirez par faire des mathématiques avec deux intensions signées plutôt que des pointeurs et le résultat peut différer de ce que vous attendez.
Je ne pense pas que QRDL a raison. Deux Ints signés? Quels sont les deux Ints signés? La distribution est faite à la suite de la soustraction, et non les deux pointeurs qui sont soustraits. Le résultat de la soustraction du pointeur est signé, très correctement. Si cela arrive effectivement avant le début, le résultat devrait être négatif, non?
juste sans ampersands et jette. C Arithmetics Pointer permet cette opération. P> P>
Je viens de l'essayer et ça fonctionnait, je ne sais pas pourquoi j'ai commencé à lancer et là-bas. Merci
Parce que c'est ce que vous faites lorsque vous êtes nouveau à C. Ajoutez simplement une étoile ou une ampersand et espérez que cela fonctionne cette fois-ci. :-) Accrochez-vous, vous l'obtiendrez.
Je n'ai jamais fait ça. Mais je suppose que c'était parce que j'avais une expérience préalable avec Peek () et Poke ().
Cette déclaration C calculera la différence entre la fin et le début. Simplement:
Il y a même un type, PTRDIFF_T, qui existe pour tenir une telle longueur. Il est fourni par 'stddef.h' p>