c - 将值从字符串转换为 int
问题描述
我在发布之前已经阅读了这个问题(将字符串转换为 int),但我仍然有疑问。
我对 C 很陌生,我正在尝试编写一个以字符串为参数的函数,如下所示:
- “99Hello”或“123ab4c”
然后将它找到的第一个数字返回到一个 int 中。所以结果是:
- 99 或 123
我试图通过在字符串中查找字符(对应于 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);
}
解决方案
我认为您应该能够通过将数字乘以 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);
}
推荐阅读
- dart - 如何在 Dart 中复制一个矩形
- r - 在 R 中使用 dplyr 对数据帧进行子集化
- python - Python的随机性的随机性
- reactjs - 在 React with Typescript 中使用 html 输出定义函数
- python - 如何将包含 OrderedDicts 的列表转换为 HTML 表格?
- python - 使用不同的数据框替换数据框中的文本值
- swift - 日期格式(“yyyy-MM-dd HH:mm:ss VV”)返回 nil
- wordpress - 显示前 8 个投资组合
- java - 如何在 json 结构本身中重新排列 json 对象?爪哇
- python - 当数据类型为对象时查找列的平均值