首页 > 解决方案 > 对字符串的迭代,“表达式必须具有指向对象类型的指针”错误

问题描述

我在对字符串进行迭代时遇到问题。

功能输入:

  1. 一串数字,中间没有空格,范围为 [-9,9],最多 10 个数字(如果每个数字都是负数,则表示最多 20 个字符长)。
  2. 字符串的大小。

该函数需要创建一个数字数组。

例如,如果我得到输入“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];
    }
}

谢谢!

标签: arrayscstring

解决方案


首先,需要一个数组。

  1. 计算位数(n)。
  2. 分配一个可以容纳n数字的数组。

接下来,这只是一个逐个查看字符串字符的问题。每当-遇到 a 时,只需使用下一个字符,但将其取反。

  1. 初始化一个变量,标识下一个要解析的字符。
  2. 循环遍历数组的每个元素,
    1. 假设数字不是负数。
    2. 如果下一个字符是 a -
      1. 数为负数。
      2. 移动到下一个字符。
    3. 将下一位数字转换为数字。
    4. 如果数字应该是负数,
      1. 否定数字。
    5. 将数字存储在当前数组元素中。
    6. 移动到下一个字符。

当然,我们需要确保用户不提供垃圾。这留给你处理。


推荐阅读