Я написал программу, которая получает строку, а затем вычислить суммарное значение строки 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);
оно говорит «значение указателя, используемое там, где ожидалось значение с плавающей запятой». я действительно couldent понимаю, Что проблема ...
Спасибо :)
Edit:
Спасибо за вашу помощь! Я смог преобразовать число в строку .. так, например, теперь, если у меня есть большая строка в данных, с парой двойников внутри нее, я могу принимать петлю каждый раз, когда двойной в новый строка. Я использовал atof, чтобы преобразовать его в двойной, хотя кажется, что двойной слишком мал .. Например: У меня в строке temp: «83331333333333334», и я использовал atof на нем -> новый double имеет 8333313 только ... остальное похоже на невключение в двойное. Я предполагаю, что число слишком велико для двойного номера ... так что я могу сделать? Спасибо!
temp - это символ *, и вы меняете в два раза – BlackBear
Я знаю, вот что я пытался сделать ..? – AmitM9S6
Возможно, вам захотелось _conversion_, так как @ouah предложил – BlackBear