繁体   English   中英

如何从此输入格式中提取数字?

[英]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 运行时库参考

GNU C 编译器和语言参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM