我正在撰寫一個選單,并嘗試選擇一個帶有字串的選項。在有關部分之后,我的程式:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pendu.h"
int main()
{
char choix_utilisateur[100];
printf("Choisissez votre douleur :\n");
printf("- > Mastermind\n");
printf("- > Pierre Feuille Ciseaux\n");
printf("- > Juste Prix\n");
printf("- > Pendu\n");
fflush(stdin);
fgets(choix_utilisateur, 100, stdin);
printf("%s\n", choix_utilisateur);
if(!strcmp(choix_utilisateur, "toto")){
printf("- > Mastermind\n");
}
else if(!strcmp(choix_utilisateur, "Pierre Feuille Ciseaux")) {
printf("- > Pierre Feuille Ciseaux\n");
}
else if(!strcmp(choix_utilisateur, "Juste Prix")) {
printf("- > Juste Prix\n");
}
else if(!strcmp(choix_utilisateur, "Pendu")) {
pendu();
}
else {
printf("Ecris autre chose\n");
}
return 0;
}
在這里,當我寫 Pendu 時,程式選擇 else 而不是 go 中的:
else if(!strcmp(choix_utilisateur, "Pendu")) {
pendu();
}
隨著一些測驗,我發現strcmp因為預期與收益不作業1,以
strcmp(choix_utilisateur, "Pendu")與choix_utilisateur = "Pendu"(我核實,變數的值,需要用與fgets好值)。我也嘗試使用 a char tab[] = "Pendu",但它也不起作用。
你知道這個問題嗎?提前謝謝。
uj5u.com熱心網友回復:
對于初學者來說,這個電話
fflush(stdin);
具有未定義的行為。
函式 fgets 可以將換行符 '\n' 附加到輸入的字串中。您需要將其洗掉。例如
choix_utilisateur[ strcspn( choix_utilisateur, "\n" ) ] = '\0';
請注意 if 陳述句中的條件將更具可讀性,例如 if 而不是這個條件
if(!strcmp(choix_utilisateur, "toto")){
來寫
if( strcmp(choix_utilisateur, "toto") == 0 ){
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/409580.html
標籤:
上一篇:如何在if陳述句中添加多個條件?
