Мой спецификатор формата printf не будет компилироваться из-за формата моей строки вместе с используемыми аргументами - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь написать небольшую программу, которая преобразует человека или любую высоту из имперской в ​​метрическую, но я получаю сообщение об ошибке компилятора: «Аргумент data не используется строкой формата»

    printf("Enter your height with just a space between feet and inches: ");
scanf("%2s", "%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);

1 Ответ

0 голосов
/ 07 июня 2018

В вашем коде много ошибок.

  • 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...