我在对字符串进行迭代时遇到问题。
功能输入:
- 一个数字字符串,中间没有空格,范围为[-9,9],最多10个数字(如果每个数字都是负数,则表示最多20个字符长(
- 字符串的大小
函数需要创建一个数字数组。
例如,如果我得到输入"0";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
号的数组
接下来,只是一次看一个字符串字符的问题。任何时候遇到-
,只需使用下一个字符,但将其取反。
- 初始化一个变量,标识要解析的下一个字符
- 循环用于阵列的每个元素,
- 假设这个数字不是负数
- 如果下一个字符是CCD_ 4,
- 数字为负数
- 移动到下一个角色
- 将下一个数字转换为数字
- 如果该数字应该是负数,
- 取负数
- 将数字存储在当前数组元素中
- 移动到下一个角色
当然,我们需要确保用户不会提供垃圾。这由你来处理。