我想从用户那里获得输入,例如(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= 44
和 y= 45
?
最佳答案
找到左括号后,读取数字字符(例如 isdigit
),并创建您的数字。
当字符不是数字时,请确保它是逗号。如果是,请按照与上面相同的方式阅读下一个数字。最后确保您有右括号。
上面假设括号和数字之间,或者数字或逗号之间没有空格。这些可以通过循环和 isspace
来处理.
至于将数字转换为数字,假设您的系统正在使用 ASCII encoding (这是现代类 PC 系统的标准)那么这很容易,因为您只需从字符中减去 '0'
即可获得数字(请参阅链接的 ASCII table 以帮助您理解原因)。将值存储在变量中,初始化为零,然后根据需要乘以 10。
根据您正在编写的解析器,您可以在解析器而不是词法分析器中处理和识别元组。这将使其更加灵活。
关于c - 如何从元组中获取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136765/