Мой второй сканф не работает - что я могу сделать? - PullRequest
3 голосов
/ 17 февраля 2020

Мой второй scanf в этом коде не работает, компьютер не ждет, когда я введу второе значение.

Я знаю, когда это происходит с %c, просто нужно поставить пробел перед %, но не может заставить его работать с %f

#include <stdlib.h>
#include <stdio.h>

main()
{
    float a, p;
    printf("Insira seu peso: "); scanf("%.1f", &p);
    printf("Insira sua altura: "); scanf("%.2f", &a);
}

Ответы [ 2 ]

4 голосов
/ 17 февраля 2020

Точка . не является допустимым символом флага формата в семействе функций scanf(). Форматы относятся к семейству форматов printf() (и это не случайно), но они далеко не идентичны.

Каждая спецификация преобразования представлена ​​символом '%'… после которого в последовательности появляются следующие символы:

  • Необязательный символ подавления присвоения '*'.

  • Необязательное ненулевое десятичное целое число, которое задает максимальную ширину поля.

  • [CX] ⌦ Необязательный символ назначения-назначения 'm'. 10

  • Модификатор длины параметра, который определяет размер принимающего объекта.

  • Символ спецификатора преобразования, который указывает тип преобразования, который будет приложенное. Действительные спецификаторы преобразования описаны ниже.

Никаких упоминаний о . там нет.

2 голосов
/ 17 февраля 2020

На самом деле ни один скан не работает должным образом в коде. Когда мы используем scanf, мы просто собираемся получить ответ от пользователя, поэтому нам не нужно (.) Перед переменной "f", всплывающей там. Мы можем внести коррективы, когда будем печатать номер, который положил пользователь. Ниже я показал пример:

#include<stdio.h>
#include<stdlib.h>


int main()
{
float a, p;
printf("\n Please enter 1st value: ");
scanf("%f", &p);
printf("\n Please enter 2nd value: ");
scanf("%f", &a);

printf("\n The value of p is: %.1f", p);
printf("\n The value of a is: %.2f", a);



printf("\n\n");

system("PAUSE");
return(0);
} 
...