Проблема с кодом, включая структуры, но я понятия не имею, почему (C)

#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);  ~^