采用null-terminate ascii string,返回int值

时间:2014-09-11 13:08:24

标签: c string

我做了两个功能。

函数是main和stringToInt。

在main函数中有两个参数(int argc,char * argv [])。它从命令行获取参数。 例)./a.out 1 2 3 4

第二个函数,我相信是char * argv []的一个参数。

我如何编码采用null-terminate ASCII字符串并返回stringToInt函数中的值。

任何帮助/示例都会很棒。

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

int strToInt(char *str){
    int total = 0;
    while(*str)
        total = total * 10 + (*str++ - '0');
    return total;
}

这是如何运作的:

它开始循环遍历每个字符,将其转换为整数(通过ascii):

所以 '1' - '0' = 1 '2' - '0' = 2等等

功能:

  1. 该函数检查传递给它的字符串是否为空或空。
  2. 逐个字符循环,将其转换为char形式的整数。
  3. 每次传递给下一个非NULL终结符的字符时,total乘以10
  4. 如果达到NULL,则
  5. 返回值。
  6. 所以当我们说“123”传递给strToInt()

    LOOP1:   遇到'1'total=0   '1'按公式转换为数字1:'1' - '0'   total现在total * 10 + 1 = 0 + 1 = 1

    LOOP2:   遇到'2'total = 1   '2'现已按公式转换为数字'2' - '0'   total现在total * 10 + 2 = 10 + 2 = 12

    LOOP3:    遇到'3'total = 12    '3'现已按公式转换为数字3:'3' - '0'    total现在total * 10 + 3 = 12*10 + 3 = 123

    LOOP4:    遇到NULL,函数返回total = 123。

答案 1 :(得分:0)

也许你应该试试这个:

int             my_get_nbr(char *str)
{
  int           res;

  if (*str == '-')
    return (-my_get_nbr(str + 1));
  if (*str == '+')
    return (my_get_nbr(str + 1));
  res = 0;
  while (*str)
    {
      res = res * 10;
      res = res + *str - '0';
      str = str + 1;
    }
  return (res);
}