arrays - 对字符串的迭代,“表达式必须具有指向对象类型的指针”错误
问题描述
我在对字符串进行迭代时遇到问题。
功能输入:
- 一串数字,中间没有空格,范围为 [-9,9],最多 10 个数字(如果每个数字都是负数,则表示最多 20 个字符长)。
- 字符串的大小。
该函数需要创建一个数字数组。
例如,如果我得到输入“809-2-3”,我的新数组需要是 - [8,0,9,-2,-3]。
在我的代码中,我收到错误“表达式必须具有指向对象类型的指针”,但我不明白。
这是我写的代码:
void separate_nums(char str, int str_len)
{
int new_arr[20];
int i;
for (i = 0; i <= str_len - 1; i++)//run through the string
{
if (str[i] == '-') //if the char is -, take minus of the next char. Then increase index by one so you'll get to the next number
{
new_arr[i] = -str[i + 1];
i++;
}
else
new_arr[i] = str[i];
}
}
谢谢!
解决方案
首先,需要一个数组。
- 计算位数(
n
)。 - 分配一个可以容纳
n
数字的数组。
接下来,这只是一个逐个查看字符串字符的问题。每当-
遇到 a 时,只需使用下一个字符,但将其取反。
- 初始化一个变量,标识下一个要解析的字符。
- 循环遍历数组的每个元素,
- 假设数字不是负数。
- 如果下一个字符是 a
-
,- 数为负数。
- 移动到下一个字符。
- 将下一位数字转换为数字。
- 如果数字应该是负数,
- 否定数字。
- 将数字存储在当前数组元素中。
- 移动到下一个字符。
当然,我们需要确保用户不提供垃圾。这留给你处理。
推荐阅读
- amazon-web-services - 使用 axios 时 S3 抛出 400 Bad Request
- javascript - iScroll5 问题 - 滚动时移动设备上的橡皮筋效果
- python-3.x - 为什么我使用 sys.stdout() 打印后得到 310,而不是只得到 3?
- javascript - 作为库作者,您如何为库中的 Web Worker 提供路径?
- r - 如何在给定时间段之间添加具有时间段的行?
- sql-server - MS 访问 SQL Server 迁移问题
- azure - 在 Azure 文件存储中存储文件创建日期
- objective-c - 目标 C:导航标题被覆盖
- rxjs - 如何将史诗变成异步函数?
- java-8 - 没有流/可选的单个对象的Java8方法链接?