Arrays 字符串上的迭代,';表达式必须具有指向对象类型';错误

Arrays 字符串上的迭代,';表达式必须具有指向对象类型';错误,arrays,c,string,Arrays,C,String,我在对字符串进行迭代时遇到问题 功能输入: 一组数字,中间没有空格,范围为[-9,9],最多10个数字(如果每个数字都是负数,则表示最大长度为20个字符) 字符串的大小 函数需要创建一个数字数组 例如,如果我得到输入“809-2-3”,我的新数组需要是-[8,0,9,-2,-3] 在我的代码中,我得到错误“表达式必须有一个指向对象类型的指针”,我不理解它 这是我写的代码: void separate_nums(char str, int str_len) { int new_arr[20

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

功能输入:

  • 一组数字,中间没有空格,范围为[-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];
        }
    }
    
    void separate_nums(char str,int str_len)
    {
    int new_arr[20];
    int i;
    
    对于(i=0;i首先,需要一个数组

  • 计算位数(
    n
  • 分配一个可以容纳
    n
    数字的数组
  • 接下来,这只是一次查看一个字符串的字符的问题。任何时候遇到
    -
    时,只需使用下一个字符,但将其取反即可

  • 初始化标识下一个要分析的字符的变量
  • 数组中每个元素的循环,
  • 假设这个数字不是负数
  • 如果下一个字符是
    -
  • 这个数字是负数
  • 移动到下一个角色
  • 将下一个数字转换为数字
  • 如果数字应该是负数,
  • 否定这个数字
  • 将数字存储在当前数组元素中
  • 移动到下一个角色

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

    它们肯定是一位数整数吗?因为如果不是,那么您就不能这样做。从您的示例中,您似乎可以假设所有值都在-9和9之间。这意味着如果您看到两个连续的数字,您永远不需要这样做将它们解释为同一个数字的一部分。但是-查阅教科书或给你这个作业的人以确保。(我不会为你编写相关代码,因为这听起来像是你得到的一个教学练习,你应该自己解决它…)老实说,这听起来像一个XY问题()!为什么您会陷入这样一种情况:您从用户处以这种格式获取输入?为什么不直接循环“输入”函数,让用户首先分别输入整数?