首页 > 解决方案 > 将值从字符串转换为 int

问题描述

我在发布之前已经阅读了这个问题(将字符串转换为 int),但我仍然有疑问。

我对 C 很陌生,我正在尝试编写一个以字符串为参数的函数,如下所示:

然后将它找到的第一个数字返回到一个 int 中。所以结果是:

我试图通过在字符串中查找字符(对应于 ASCII 表中的数字)来做到这一点,然后将它们存储在我创建并由函数返回的 int 中。

我遇到了麻烦,因为当我找到那些字符(对应于数字)时,我不知道如何将它们保存到 int 数据类型变量或如何转换它们。我知道有一个名为 atoi 的函数可以自动执行此操作,但我想知道如何自己执行此操作。

这是我到目前为止写的:

int ReturnInt(char *str)
{
    int     i;
    int     new;

    i = 0;
    new = 0;
    while (str[i] != '\0')
    {
         if( str[i] >= '0' && str[i] <= '9')
        {
            str[i] = new - '0';
        }
        i++;
    }

    return (new);
}

标签: cstringinteger

解决方案


我认为您应该能够通过将数字乘以 10 并在迭代时将它们相加来从数字中形成所需的整数。此外,我认为您的循环的终止条件还应该包括isDigit检查

例如,对于输入99Hello

i = 0,新 = 0 -> new = 0 * 10 + 9(9)

i = 1,新 = 9 -> new = 9 * 10 + 9(99)

i = 2,条件不满足,因为它不是数字

int ReturnInt(char str[]) {
  int i;
  int new;

  i = 0;
  new = 0;
  while (str[i] != '\0' && (str[i] >= '0' && str[i] <= '9'))
    {
      int currentDigit = str[i] - '0';
      new = new * 10 + currentDigit;
      i++;
    }

  return (new);
}

推荐阅读