4 votes

C for boucle à travers un tableau avec des pointeurs

Je suis nouveau en C mais j'ai de l'expérience en Java et Android. J'ai un problème dans ma boucle for. Elle ne se termine jamais et ne fait que s'éterniser.

char entered_string[50];
char *p_string = NULL;

gets( entered_string );

for( p_string = entered_string; p_string != '\0'; p_string++ ){
    //....
}

Je sais que gets n'est pas sûr, n'est pas recommandé et est déprécié, mais selon mes spécifications, je dois l'utiliser. Je veux boucler sur chaque élément en utilisant des pointeurs.

12voto

Cornstalks Points 9261

Votre test devrait être *p_string != '\0';

p_string est un pointeur, et votre boucle vérifie si le pointeur est != '\0' . Ce qui vous intéresse, c'est de savoir si la valeur est != '\0' et pour obtenir la valeur d'un pointeur, il faut le déréférencer avec la fonction * .

3voto

Ioan Domsa Points 36
    char str[] = "54321"; 
    char *p;  
    p = str;   
    for (p; *p != '\0';++p)
    {
         printf("%s \n",p);
    }

Sortie :
54321
4321
321
21
1

1voto

Nikolai N Fetissov Points 52093

Il devrait être *p_string != '\0' pour la condition - vous devez déréférencer le pointeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X