c - 如何从元组中获取数字?

标签 c string input integer

我想从用户那里获得输入,例如(4,5)。但我只想获得整数值。(4和5)我为此编写了代码。但它不起作用。我该怎么办解决问题。

int x, y;
int c;

c = getchar();
while (c != EOF) {
    while (c != '(' && c != EOF) {

        c = getchar();

    }
    while (c != ',' && c != EOF) {

        c = getchar();

    }
    x = c;

    while (c != ',' && c != EOF) {

        c = getchar();

    }
    while (c != ')' && c != EOF) {

        c = getchar();

    }
    y = c;
}

我得到输入(1,4)。输出是 x= 44y= 45

最佳答案

找到左括号后,读取数字字符(例如 isdigit ),并创建您的数字。

当字符不是数字时,请确保它是逗号。如果是,请按照与上面相同的方式阅读下一个数字。最后确保您有右括号。

上面假设括号和数字之间,或者数字或逗号之间没有空格。这些可以通过循环和 isspace 来处理.

<小时/>

至于将数字转换为数字,假设您的系统正在使用 ASCII encoding (这是现代类 PC 系统的标准)那么这很容易,因为您只需从字符中减去 '0' 即可获得数字(请参阅链接的 ASCII table 以帮助您理解原因)。将值存储在变量中,初始化为零,然后根据需要乘以 10。

<小时/>

根据您正在编写的解析器,您可以在解析器而不是词法分析器中处理和识别元组。这将使其更加灵活。

关于c - 如何从元组中获取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136765/

相关文章:

c - 在 C 中将 2 个字符串相互匹配?

javascript - js-正则匹配数组和字符串

java - 通过 JNI 读取文件时崩溃,但仅运行代码的 C 元素时成功

C:在控制台中安全地输入和存储字符串的简单方法?

ios - 如何从 FFT 中获得更精确的输出?

c - 在 C 中测量没有 pthread 的开销

python - 从 Python 中的字符串中提取负载平均浮点值的最佳方法是什么?

c - 循环遍历数组,增量不起作用

c - 无缓冲的 misc_device 读取 - linux 内核驱动程序

javascript - 在下拉菜单中选择选项后 append 新的输入字段