Вы используете тип long
для id1
, который может иметь диапазон от -2147483647
до 2147483647
в зависимости от архитектуры целевой системы.Этот тип не может использоваться для хранения больших чисел в вашей системе.
Кстати, формат %-10.0ld
для id1
кажется неправильным, поскольку вывод для значения 0
будет всего 10 пробелов.В поле precision указывается не количество десятичных знаков для целых чисел, а минимальное количество цифр.
Обратите также внимание, что main
без аргументов должен иметь прототип int main(void)
, ивам следует проверить возвращаемое значение scanf()
, чтобы избежать неопределенного поведения при неверном вводе.
Для решения вашей проблемы возможны следующие решения:
Вы можете использовать типdouble
но я бы не советовал.
Вы можете попробовать набрать long long int
, но этот тип может не полностью поддерживаться в вашей системе.
Я предлагаю вам использовать символьную строку для вашей цели.
Вот модифицированная версия:
#include <stdio.h>
int main(void) {
char id1[20];
double l1, w1;
printf("enter student 1 id, height and weight:\n");
if (scanf("%19s%lf%lf", id1, &l1, &w1) != 3) {
printf("invalid input\n");
return 1;
}
printf("STUDENT INFORMATION:\n");
printf("\n%-10s\t %-4.3f\t %-4.3f\n", id1, l1, w1);
return 0;
}