ファイルから読み込んだ値があり、char*として保存されています。値は、通貨番号#。##、##。##、または###。##です。char *を計算に使用できる数値に変換したいのですが、atofとstrtodを試しましたが、ゴミの数値が表示されます。これを行う正しい方法は何ですか、そしてなぜ私がそれを間違っているのですか?
これは基本的に私が行っていることであり、char*値だけがファイルから読み込まれます。temp変数とftemp変数を出力すると、それらは単なるゴミであり、巨大な負の数です。
別の編集:
私はこれをgccで正確に実行しています
#include <stdio.h>
int main()
{
char *test = "12.11";
double temp = strtod(test,NULL);
float ftemp = atof(test);
printf("price: %f, %f",temp,ftemp);
return 0;
}
私の出力は価格です:3344336.000000、3344336.000000
編集:これが私のコードです
if(file != NULL)
{
char curLine [128];
while(fgets(curLine, sizeof curLine, file) != NULL)
{
tempVal = strtok(curLine,"|");
pairs[i].name= strdup(tempVal);
tempVal = strtok(NULL,"|");
pairs[i].value= strdup(tempVal);
++i;
}
fclose(file);
}
double temp = strtod(pairs[0].value,NULL);
float ftemp = atof(pairs[0].value);
printf("price: %d, %f",temp,ftemp);
私の入力ファイルは非常に単純な名前で、次のような値のペアです。
NAME|VALUE
NAME|VALUE
NAME|VALUE
値はドル額です
解決済み:ありがとうございます。%fの代わりに%dを使用していて、適切なヘッダーが含まれていませんでした。