我编写了一个获取字符串的程序,然后计算字符串的总值 togheder ... 例如:
char data[256] = "1$0.83331333333333334$false$false"; // the data
这里我需要计算 1 + 0.83331333333333334 所以这就是我写的:
char data[256] = "1$0.83331333333333334$false$false"; // the data
double grade = 0;
int i = 0;
int times = 0;
char temp[256] = "";
int flag = 0;
while (flag == 0)
{
times = 0;
if (isdigit(data[i])) // if it's a number
{
if (data[i + 1] == '.') // if it's a double number
{
i = i + 2;
while (isdigit(data[i])) // putting it into a temp array
{
temp[i] = data[i];
i++;
times++;
}
grade = grade + (double)temp / (times * 10);
}
grade = grade + (int)data[i]; // if it's an int number, putting it into grade right away
}
if (data[i] == '\0')
{
flag = 1;
}
i++;
}
printf ("%f\n", grade);
问题在于:
grade = grade + (double)temp / (times * 10);
它说“在预期浮点值的地方使用了指针值”。我真的无法理解这是什么问题......
谢谢 :)
编辑:
谢谢你的帮助!我已经能够将数字转换为字符串.. 例如,现在如果我在数据中有大字符串,其中有几个双精度数,我可以在每次双精度数转换为新字符串时循环。我已经使用 atof 将其转换为双精度,尽管双精度似乎太小了。例如:我在字符串 temp 中有:“83331333333333334”,我在其上使用了 atof -> 新的双精度有 8333313只是......其余的就像不进入双重......我猜这个数字对于双重数字来说太大了......那我该怎么办?谢谢!