#c #struct
Вопрос:
Итак, я в некотором роде новичок, и я изучал структуры, поэтому решил попробовать создать программу, которая принимает длину 2 расстояний в метрах и сантиметрах, но пропускает ввод значения метра второго расстояния. Код, который я использовал, это:
#includelt;stdio.hgt; struct distance{ int meter; float centimeter; }l1,l2,sum; int main() { printf("Distance 1 : n"); printf("Enter the meter value :"); scanf("%d",amp;l1.meter); printf("Enter the centimeter value :"); scanf("%.2f",amp;l1.centimeter); printf("Distance 2 : n"); printf("Enter the meter value : n"); scanf("%d",amp;l2.meter); printf("Enter the centimeter value :"); scanf("%.2f",amp;l2.centimeter); sum.meter = l1.meter l2.meter; sum.centimeter = l1.centimeter l2.centimeter; while(sum.centimeter gt;= 100) { sum.meter; sum.centimeter-=100; } printf("The sum of the distances you have entered is %d m and %f cm.",sum.meter,sum.centimeter); return 0; }
Что я сделал не так?
Комментарии:
1. Вы не читали предупреждения компилятора.
%.2f
не является допустимым форматом дляscanf
использования%f
.2. Спасибо! Я не видел никаких предупреждений компилятора, хотя, может быть, из-за моей IDE? В любом случае, большое спасибо!
Ответ №1:
Вы используете недопустимый спецификатор формата в scanf("%.2f"...)
. Вместо этого вы можете использовать scanf("%f"...)
. Однако, возможно, вы захотите включить предупреждения компилятора. Вот соответствующее предупреждение, которое я получил на своей машине :
warning: invalid conversion specifier '.' [-Wformat-invalid-specifier] scanf("%.2f",amp;l2.centimeter); ~^