我正在编写一个程序,将罗马数字转换为阿拉伯数字,反之亦然。在我为程序添加了一种检查输入是否为数字或字符串的方法之前,该程序对于这两种程序均运行良好。
现在,一切都仍然有效,只是它忽略I
了scanner(scanf_s
)中每个字符串的第一个。后续的I
信件或其他信件均不会发生这种情况。
即。
II将I读入romanString
IV将V读入romanString
XX将XX读入romanString
XIX将XIX读入romanString
I
是的一部分Infinity
并使用scanf_s("%f",...
,I
但找不到其余部分并返回0。
scanf()
和family是解析变体格式的糟糕方法。更好的读取线带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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句