这一点C代码让我疯狂。它要求输入电压,但它跳过电阻1并要求电阻2.我在这里遗漏了一些非常明显的东西......到底发生了什么......
#include <stdio.h>
int main()
{
float Vin;
int R1;
int R2;
printf("Input Voltage: ");
scanf("%.3f", &Vin);
printf("\nResistor 1: ");
scanf("%d", &R1);
printf("\nResistor 2: ");
scanf("%d", &R2);
return(0);
}
答案 0 :(得分:5)
删除.3
部分:
scanf("%f", &Vin);
配置输入的小数位数没有意义:)因此,scanf
不支持它。 float
总是有8位小数。提高编译器的警告级别。
答案 1 :(得分:5)
如果在编译器上打开-Wall
,则会收到警告:
警告:未知转化类型字符'。'格式为[-Wformat]
警告:格式[-Wformat-extra-args]
的参数太多
所以只需从scanf
删除.3。
答案 2 :(得分:3)
使用简单的%f。这是样本:
printf("Input Voltage: ");
scanf("%f", &Vin);
printf("\nResistor 1: ");
scanf("%d", &R1);
printf("\nResistor 2: ");
scanf("%d", &R2);
答案 3 :(得分:3)
在这里从臀部拍摄 - 我的直觉说第一个scanf
被你的输入字符串“满足”,剩下的输入,第二个scanf
让所有内容都到达换行符
尝试用"%f"
替换第一个格式字符串,看看它是否仍然存在。或者,当您看到傻瓜行为时,打印出电压和R1的值。无论如何,最好还是担心在阅读之后对电压输入进行舍入/截断。