[英]How do i extract the numbers from this input format?
我需要像我突出显示的那条线一样“扫描”。 我如何提取数字? 我在课程开始时,所以不要发布过于复杂的解决方案,我可能还没有研究过。
输入(房屋成本、首付、储蓄、储蓄年利率、抵押年利率、工资、储蓄率、年加薪、房屋租金):
(600000, 0.15, 50000, 0.02, 0.03, 10000, 0.3, 0.03, 2000)
C语言。
我如何提取数字?
简单的方法是使用fgets()
读取该行,然后使用sscanf()
和"%n"
进行解析以记录扫描的偏移量,如果它达到了那么远。
使用允许(,)
分隔符附近有空格的格式。
"%lf"
已经消耗了前导空格。
#define EXPECTED_SIZE 100
char buffer[EXPECTED_SIZE * 2]; // Be generous in buffer size
// Was a line successfully read?
if (fgets(buffer, sizeof buffer, stdin)) {
// Example code simplified to 3 variables
double House_cost, down_payment, savings;
int n = 0;
sscanf(buffer, " (%lf ,%lf ,%lf ) %n",
&House_cost, &down_payment, &savings, &n);
// Did scanning reach the %n and was that the end of the line?
if (n > 0 && buffer[n] == '\0') {
Success();
} else {
Failed();
}
}
一个好的解析器已准备好检测错误的输入。 不要假设输入格式正确。
有一组 C ANSI 标准库函数可将字符数据转换为数字数据。 它们在 stdlib.h 头文件中,是 atoi()、atof()、atol()、atoll()。 这些函数将 alpha 转换为整数、浮点双精度、长整数和长长整数数据类型。
如果不熟悉 C 语言,请参考适用于 GNU C/C++ 编译器的在线文档... GNU C 运行时库参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.