I
является частью Infinity
, а scanf_s("%f",...
потребляет I
, но не может найти остальное и возвращает 0.
scanf()
, и семейство - плохой способ для анализа вариантов форматов , Лучше прочитать строку с fgets()
, а затем проанализировать строку .
или, если необходимо, использовать scanf_s()
...
char romanString[100];
float arabicNumber=0;
printf("Enter roman or arabic number:");
scanf_s("%99s", romanString, 99); // should be scanf_s("%99s", romanString, 100);
if (sscanf_s(romanString, "%f", &arabicNumber) == 1)
{
printf("Roman numerals: ");
arabicToRoman(arabicNumber);
}
else
{
printf("Arabic numerals: ");
romanToArabic(romanString);
}