gpt4 book ai didi

c - 如何检查用户输入是否是某个字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:30 24 4
gpt4 key购买 nike

我正在尝试检查用户是否输入了 y 或其他内容。

我已经尝试创建一个字符串并循环遍历用户输入的内容,但这不起作用。

char answer[] = "n";
for(int i = 0; i < sizeof(answer)/4; i++) {
if(answer[i] == "y") {
calculatorPrompt();
} else if(answer[i] === "n") {
printf("Okay, bye!");
System(100);
}
}

这是我的代码(我确定它会在 if 语句中崩溃):

printf("Thanks for that\nDo you want a calculator?(y/n)");
char answer = 'n';
scanf("%s", answer);
if(answer == 'y') {
calculatorPrompt();
} else if(answer == 'n') {
printf("Okay bye!");
Sleep(100); //wait for 100 milliseconds
}

calculatorPrompt()功能:

void calculatorPrompt() {
int a = 0;
int b = 0;
int sum = 0;
printf("Enter your first number: ");
if(scanf("%d\n", a) != 1) {
checkNumber();
} else {
printf("Enter your second number: ");
if(scanf("%d\n", b) != 1) {
checkNumber();
} else {
sum = calculate(a, b);
printf("Your answer is: %d", sum);
}
}

}

calculate()功能:

int calculate(int a, int b) {
return a + b;
}

checkNumber()功能:

void checkNumber() {
printf("Really? You didn't enter a number... Now exiting..");
return;
}

我已经包括了<windows.h> <stdio.h><stdbool.h>

我也对它崩溃的原因感到困惑。

程序的返回值为-1,073,741,819。

最佳答案

You have multiple issues with scanf() statements in the code :

  • calculatorPrompt()你的代码的功能,你使用:

    if(scanf("%d\n", a) != 1) //wrong : sending variable as argument
  • 这是错误的,因为您需要发送 address of the variable作为参数不是 variable本身作为参数。

    if(scanf("%d", &a) != 1) //correct : sending address as argument
  • 扫描其他的时候也有类似的变化integers在代码中。


这里,

char answer = 'n';
scanf("%s", answer);
  • 由于您使用了错误的格式说明符,这将调用未定义的行为

  • 这里是因为 answerchar所以,改为使用:

    scanf(" %c", &answer); //space to avoid white spaces

正如我已经在评论中建议的那样:

  • 您使用 i < sizeof(answer)/4for循环

No! it must be i < sizeof(answer), as in a string every element occupies only 1 byte not 4 (you are mistaking it for an int array)

顺便说一下,您的代码中没有任何字符串

关于c - 如何检查用户输入是否是某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com