【发布时间】:2015-02-11 06:31:23
【问题描述】:
我正在尝试编写一个从字符串表示中解析整数的函数。
我的问题是我不知道如何通过字符串来做到这一点。如果我提前知道输入只包含'0'、'1'、...、'9' 范围内的字符,并且字符串的长度为n,我当然可以计算出
character_1 * 10^(n-1) + character_2 * 10^(n-2) + .... + character_n * 10^0
但我想处理我所介绍的一般情况。
我不是在寻找库函数,而是在“纯 C”中实现这一目标的算法。
这是我开始的代码:
int parse_int (const char * c1, const char * c2, int * i)
{
/*
[c1, c2]: Range of characters in the string
i: Integer whose string representnation will be converted
Returns the number of characters parsed.
Exs. "2342kjsd32" returns 4, since the first 4 characters were parsed.
"hhsd3b23" returns 0
*/
int n = 0;
*i = 0;
while (c1!= c2)
{
char c = *c1;
if (c >= '0' && c <= '9')
{
}
}
return n;
}
【问题讨论】:
-
inside if 条件
n = n*10 + (c-'0'); -
Pure C, so no libraries是否包括忽略标准库? -
@Lashane 那行不通。例如,如果字符串是“123”,那么它将被计算为 1+20+300=321。
-
这似乎是一个“请为我编写代码”的问题......坦率地说,看起来有问题的代码是别人提供的骨架,你应该填写它...如果是您自己的代码,那么请继续编码,并在您遇到实际问题或错误时询问。当前代码只是不完整,它似乎没有实际问题!
-
@SteveBallmer 它会工作。在“123”上,第一次迭代是*i = 0*10 + ('1' - '0'),这是1;第二次迭代将是 *i = 1*10 + ('2' - '0'),这使得 12;第三次迭代将是*i = 12*10 + ('3' - '0'),最终结果是123。