gpt4 book ai didi

c - 为什么 printf 可以工作,而 scanf 却不能?

转载 作者:行者123 更新时间:2023-11-30 18:41:59 25 4
gpt4 key购买 nike

好吧,所以我必须创建一个天气程序,当我尝试运行代码时,我没有收到任何错误,但它只会打印“输入起始温度”和“输入结束温度”。但是它不允许我输入数据。有什么我需要改变的吗?我知道我还没有完成代码,但我只是想在继续其余代码之前测试输入。感谢您的帮助!

#include <stdio.h>
int main(int argc, char **argv)
{
float celcius, fahrenheit, kelvin, ending, interval;
int c, f, k, temp;

printf("which temperature is being input? (C,F,K) ");
scanf("%d", &temp);
if (temp == c)
{
printf("enter a starting temperature");
scanf("%f", &celcius);
printf("enter an ending temperature");
scanf("%f", &ending);
fahrenheit = celcius * 9 / 5 + 32;
kelvin = celcius + 273.15;
}
if (temp == f)
{
printf("enter a starting temperature");
scanf("%f", &fahrenheit);
celcius = fahrenheit - 32 * 5 / 9;
kelvin = fahrenheit - 32 * 5 / 9 + 273.15;
printf("enter an ending temperature");
scanf("%f", &ending);
if (temp == k)
{
}
printf("enter a starting temperature");
scanf("%f", &kelvin);
fahrenheit = kelvin - 273 * 1.8 + 32;
celcius = kelvin - 273.15;
printf("enter an ending temperature");
scanf("%f", &ending);
}
}

最佳答案

这个:

if (temp == c)

正在将temp中新读取的值与未初始化变量c中的未定义值进行比较。这是未定义的行为。

你的意思可能是

if (temp == 'c')

与一个角色进行比较,但你还需要:

char temp;
if (scanf("%c", &temp) == 1)
{
if (temp == 'c')
{
/* more code here */
}
}

请注意,检查 scanf() 的返回值有助于使程序更加健壮,并避免进一步使用未初始化的值(如果 scanf() 无法读取某些内容,您不应该读取目标变量,因为它不会被写入)。

关于c - 为什么 printf 可以工作,而 scanf 却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253659/

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