如何从tupple中获取数字?

时间:2015-05-09 06:24:00

标签: 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

2 个答案:

答案 0 :(得分:1)

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

当字符不是数字时,请确保它是逗号。如果是,你读取与上面相同的下一个数字。最后确保你得到右括号。

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

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

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

答案 1 :(得分:0)

按照你的代码流程x值将是字符逗号。     int c,x,y;     c = getchar();     而(c!= EOF){

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

        c = getchar();

    }

    c = getchar();
    x = c;

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

        c = getchar();

    }

    /*x = c;

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

        c = getchar();

    }
    */

    c = getchar();
    y = c;

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

        c = getchar();

    }
    //y = c;

    printf("x = %c ,y = %c ",x,y);
}