В вашем коде много ошибок.
ft
(футы) - обычно переменная с плавающей запятой, используйте %f
вместо %s
.Также укажите весь спецификатор формата в одинарных двойных кавычках, таких как "%f %f"
.Вероятно, вы хотите вот так
scanf("%2f %f", &ft, &in);
Вы должны проверить, был ли scanf()
успешным или нет, проверив возвращаемое значение scanf()
, прочитайте страницу руководстванабрав man 3 scanf
в командной строке или см. здесь http://man7.org/linux/man-pages/man3/scanf.3.html.например,
int ret = scanf("%2f %f", &ft, &in);
Вот пример кода
#include<stdio.h>
int main(void) {
float ft = 0, in = 0; /* don't keep uninitialized local variable */
printf("Enter your height with just a space between feet and inches: ");
scanf("%2f %f", &ft, &in);
ft = in / 12;
double delta = (ft * 30.48);
double rem = in * 2.54;
double calc = delta + rem;
printf("Your height is %f ft and %.1f in\n", delta, calc);
return 0;
}
Также скомпилируйте вашу программу с флагом -Wall
, например gcc -Wall test.c
, и не игнорируйте предупреждение, решай их.Лучше обрабатывать все предупреждения как ошибки, компилируя с -Wstrict-prototypes -Werror
, чтобы избежать ошибок.например,
gcc -Wall -Wstrict-prototypes -Werror test.c
И, наконец, научитесь отлаживать небольшой код https://ericlippert.com/2014/03/05/how-to-debug-small-programs/