文字列を取得し、文字列の合計値を計算するプログラムを作成しました...例:
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);
「浮動小数点値が期待される場所で使用されるポインター値」と表示されます。私は本当に何が問題なのか理解できませんでした...
ありがとう :)
編集:
ご協力いただきありがとうございます!数値を文字列に変換することができました..たとえば、データに大きな文字列があり、その中にいくつかの double がある場合、double が新しい文字列になるたびにループを使用できます。double が小さすぎるようですが、atof を使用して double に変換しました。たとえば、文字列 temp : "83331333333333334" に atof を使用しました -> 新しい double には 8333313 がありますただ... 残りは、倍精度には入らないようなものです..倍精度の数値には大きすぎると思います...どうすればいいですか? ありがとう!