Je dois écrire un programme dans lequel le programme doit boucler et obtenir une entrée de l'utilisateur. Pour casser la boucle, l'utilisateur devra taper la sortie sur le clavier. Ce qui suit est mon code:
int main()
{
char input[100];
char terminate[100]="$exit";
//if input does not equals to terminate keep asking user for input
while(strcmp(input, terminate)!=0)
{
printf("$");
fgets(input,100,stdin);
}//otherwise, exit the program
}
3 Réponses :
Vous pouvez utiliser fgets code> lira le caractère EOL qui sera inclus dans la chaîne finale. P>
strncmp code> pour simplement utiliser les caractères de "Terminez": STRNCMP (entrée, terminez, SHLEN (Terminez) Code>. P>.
Merci pour l'aide. J'apprécie vraiment votre aide!
l'a compris. Voici ma solution:
while(strncmp(input, terminate,4)!=0)
{
printf("$");
fgets(input,100,stdin);
}
Cela ne résout pas tous les problèmes et permettra à l'utilisateur d'entrer $ exi code> pour quitter.
Il y a deux em> (et éventuellement trois) problèmes dans votre code comme vous le montrez: Le premier, qui est très grave, est que vous utilisez Le deuxième problème est que Vous pouvez facilement supprimer la nouvelle ligne de la chaîne d'entrée à l'aide de
entrée code> avant son initialisation. Cela signifie que le contenu de la matrice est indéterminé em> (et pourrait être considéré comme "aléatoire" ou "ordures"). Qui va probablement conduire à comportement non défini em> lorsque vous l'utilisez dans STRCMP code> car ce n'est pas une chaîne corrigée nulle. p>
li>
fgets code> ajoute la fin de fin de la mémoire tampon, donc à moins que vous ne l'enlève ou ajoutez une nouvelle ligne dans la chaîne que vous comparez avec les chaînes ne sera jamais égale. p>
Strcspn code> fonction: p>
char terminate[] = "exit"; // The size of the array will be 5, including null-terminator
Quelle entrée espérez-vous après le symbole '$'?