ファイルから読み込んだ値がchar *として格納されています。値は通貨番号、#。##、##。##、###。##です。私はchar *を私が計算で使うことができる数字に変換したい、私はatofとstrtodを試してみたところ、私はガベージ番号を与えるだけです。これを行う正しい方法は何ですか、なぜ私はそれを間違ってやっているのですか?char *をfloatまたはdoubleに変換する
これは基本的に私がやっていることです。ちょうど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を使用してのdidnました適切なヘッダーが含まれています。
問題は他の場所にある必要があります。投稿したコードは完全に有効であり、動作しています。ファイルの読み方を教えてください。 –
1. 'atof'は' double'も返します:http://pubs.opengroup.org/onlinepubs/007904875/functions/atof.html – ArjunShankar
2. '%d'は整数です。 '%f'を使用してください。 – ArjunShankar