【问题标题】:How can I get the numbers from tupple?如何从元组中获取数字?
【发布时间】:2015-05-09 06:24:00
【问题描述】:

我想从用户那里得到一个输入,比如(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 ?

【问题讨论】:

  • 您应该将其标记为 C 而不是 C++。
  • c 是哪种类型?将 char 转换为 int 使用其 ascii 代码。
  • 顺便说一下,I wrote a code for this.But it did not work.How can I fix the problem. 是一种不同的表达方式“我的代码不工作,请为我调试”,它属于关闭此类问题的一个非常具体的类别。跨度>
  • 您要查找逗号两次。

标签: c string input integer


【解决方案1】:

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

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

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


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


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

【讨论】:

    【解决方案2】:

    按照您的代码流 x 值将是字符逗号。 整数 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2019-12-17
      • 2017-10-11
      • 2021-12-28
      • 1970-01-01
      相关资源
      最近更新 更多