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
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问题()!为什么您会陷入这样一种情况:您从用户处以这种格式获取输入?为什么不直接循环“输入”函数,让用户首先分别输入整数?