Petite boucle en C
seo610
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
seo610 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
seo610 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
comment faire pour arrêter cette boucle en écrivant "endNow" :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buffer[1024] = "";
do
{
fgets(buffer, 10, stdin);
printf("\n%s\n", buffer);
} while (buffer != "endNow"); // c'est ici que ca la pas l'air de marcher,pourtant, ça compile
printf("C'est fini");
system("PAUSE");
return 0;
}
Merci de m'aider
comment faire pour arrêter cette boucle en écrivant "endNow" :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buffer[1024] = "";
do
{
fgets(buffer, 10, stdin);
printf("\n%s\n", buffer);
} while (buffer != "endNow"); // c'est ici que ca la pas l'air de marcher,pourtant, ça compile
printf("C'est fini");
system("PAUSE");
return 0;
}
Merci de m'aider
A voir également:
- Petite boucle en C
- Petite amie virtuelle en français gratuit - Accueil - Intelligence artificielle
- Petite croix snap - Forum Snapchat
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Savoir si je suis bloqué par une personne sur snap chat ✓ - Forum Snapchat
2 réponses
} while (buffer != "endNow");
Ton texte de boucle est correct au niveau de la syntaxe, donc la compilation se passe sans erreur.
Par contre cela ne fait pas du tout ce que tu souhaites !!
Ici tu compares l'adresse du buffer buffer à celle où est stockée la chaîne "endNow". Ces deux adresses étant toujours différentes, le test est toujours vrai !...
Il te faut comparer le contenu des chaînes :
} while (strcmp( buffer , "endNow"));
strcmp() retourne 0 (donc Faux) quand égalité est vérifiée
Ton texte de boucle est correct au niveau de la syntaxe, donc la compilation se passe sans erreur.
Par contre cela ne fait pas du tout ce que tu souhaites !!
Ici tu compares l'adresse du buffer buffer à celle où est stockée la chaîne "endNow". Ces deux adresses étant toujours différentes, le test est toujours vrai !...
Il te faut comparer le contenu des chaînes :
} while (strcmp( buffer , "endNow"));
strcmp() retourne 0 (donc Faux) quand égalité est vérifiée
Bon,
j'ai essayé ça :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char buffer[1024] = "";
do
{
fgets(buffer, 1024, stdin);
printf(" : %s", buffer);
} while (strcmp( buffer , "endNow" ));
printf("\nTest concluant\n");
system("PAUSE");
return 0;
}
Mais ca ne marchais pas plus, donc j'ai essayé ça :
int main(int argc, char *argv[])
{
char buffer[1024] = "";
int stop = 1;
do
{
fgets(buffer, 1024, stdin);
printf(" : %s", buffer);
if (strcmp( buffer , "endNow" ) == 0)
{
stop = 0;
}
else
{
stop = 1;
}
} while (stop == 1);
printf("\nTest concluant\n");
system("PAUSE");
return 0;
}
Mais ca ne marche pas plus aussi, je ne comprend vraiment pas pourquoi,
pouvez vous m'aider? merci beaucoup
j'ai essayé ça :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char buffer[1024] = "";
do
{
fgets(buffer, 1024, stdin);
printf(" : %s", buffer);
} while (strcmp( buffer , "endNow" ));
printf("\nTest concluant\n");
system("PAUSE");
return 0;
}
Mais ca ne marchais pas plus, donc j'ai essayé ça :
int main(int argc, char *argv[])
{
char buffer[1024] = "";
int stop = 1;
do
{
fgets(buffer, 1024, stdin);
printf(" : %s", buffer);
if (strcmp( buffer , "endNow" ) == 0)
{
stop = 0;
}
else
{
stop = 1;
}
} while (stop == 1);
printf("\nTest concluant\n");
system("PAUSE");
return 0;
}
Mais ca ne marche pas plus aussi, je ne comprend vraiment pas pourquoi,
pouvez vous m'aider? merci beaucoup