gpt4 book ai didi

无法获得 scanf_s 或切换工作

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:37 25 4
gpt4 key购买 nike

我在使用 scanf_s() 时遇到了一些问题;函数或开关函数,我第一次运行我的代码时它无法识别正确的字符并循环回到开头,但之后它工作正常。这是一个简单的计算器。

可能有一些简单的解决方案,因为我刚开始学习编程,但我找不到。

所有文本都是芬兰语,但我希望代码本身是可以理解的。

欢迎所有反馈,因为我渴望了解我应该做什么和不应该做什么。

#include <stdio.h>
#include <stdlib.h>

float luku1 = 0;
float luku2 = 0;
float tulos = 0;
char valinta = '\0';

int main()
{
system("cls");
printf("Minkä laskusuorituksen haluaisit tehdä? (+,-,*,/)\n");
fflush(stdin);
scanf_s("%c", &valinta);
switch (valinta){
case '+':
printf("Anna yhteenlaskettavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 + luku2;
printf("Lukujen summa on %4.2f\n", tulos);
break;
case '-':
printf("Anna vähennettävät luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 - luku2;
printf("Lukujen summa on %4.2f\n", tulos);
break;
case '*':
printf("Anna kerrottavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 * luku2;
printf("Lukujen tulo on %4.2f\n", tulos);
break;
case '/':
printf("Anna jaettavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
if (luku2 == 0)
{
printf("Nollalla ei voida jakaa.\n");
system("pause");
main();
}
else
{
tulos = luku1 / luku2;
printf("Lukujen jako on %4.2f\n", tulos);
}
break;
default:
printf("En tunnistanut laskutoimitusta, yritä uudelleen.\n");
system("pause");
main();
break;
}
}

最佳答案

scanf_s("%c", &valinta); 需要另一个参数。 @马夫索

 scanf_s(" %c", &valinta, 1);

"%c" 之前添加一个空格将有助于代码再次调用 scanf_s("%c", &valinta);

“fscanf_s 函数等效于 fscanf,只是 c、s 和 [ 转换说明符适用于一对参数(除非赋值抑制由 * 指示)。第一个arguments 与 fscanf 相同。在参数列表中,argument 紧跟第二个参数,其类型为 rsize_t 并给出第一个参数指向的数组中的元素数对。”

C11dr §K.3.5.3.2 4


建议删除 fflush(stdin);,因为它不可移植并且可能/可能无法按预期工作。

关于无法获得 scanf_s 或切换工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835544/

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