-6

这个算法写在写伟大的代码卷 1 书中,用于将十进制数字字符串转换为整数值:

  1. 用零初始化一个变量;这将保持最终值。
  2. 如果字符串中不再有数字,则算法完成,变量保存数值。
  3. 从字符串中获取下一个数字(从左到右)。
  4. 将变量乘以 10,然后将步骤 3 中获取的数字相加。
  5. 转到第 2 步并重复。

我不知道转换是如何发生的。请举个例子。

4

3 回答 3

2
/* warning: naive and unsafe implement. don't use it for important projects */
int strtod(const char *str)
{
    int ret = 0;
    while (*str)
        ret = ret * 10 + *str++ - '0';
    return ret;
}
于 2013-03-21T10:38:24.910 回答
1

这是您的标准字符串到整数的转换算法:

char *s = "12345";
int res = 0;              // 1. Initialize a variable with zero
while (*s) {              // 2. If there are no more digits in the string...
    int d = (*s++ - '0'); // 3. Fetch the next digit
    res = 10*res + d;     // 4. Multiply the variable by ten, and then...
}                         // 5. Go to step 2 and repeat.
于 2013-03-21T10:37:47.630 回答
1

考虑字符串“1134”

String        Variable

()1134        0
(1)134     0 * 10 + 1 =    1
1(1)34     1 * 10 + 1 =   11
11(3)4    11 * 10 + 3 =  113
113(4)   113 * 10 + 4 = 1134
于 2013-03-21T10:49:57.187 回答