Bir dosyadan okudum ve char * olarak sakladığım bir değere sahibim. Değer bir parasal sayıdır, #. ## ##. ## veya ###. ##. Char * 'i hesaplamalarımda kullanabileceğim bir sayıya dönüştürmek istiyorum, atof ve strtod denedim ve sadece çöp numaraları verdiler. Bunu yapmanın doğru yolu nedir ve neden yanlış yapıyorum?Char * veya float dönüştürmek
Bu aslında yaptığım şey, sadece char * değeri bir dosyadan okunur. Temp ve ftemp değişkenlerini yazdırdığımda sadece çöp, devasa negatif sayılar.
Başka Düzenleme:
Ben 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;
}
tam olarak bu çalıştırıyorum ve benim çıkış fiyatıdır: 3.344.336,000000, 3344336,000000
Düzenleme: İşte benim kod
olduğunuif(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);
değer dolar olmak
NAME|VALUE
NAME|VALUE
NAME|VALUE
tutarlar
ÇÖZÜLDÜ: Tüm, ben% d yerine% f kullanılarak ve duymadınız ederiz'
benim girdi dosyası çok basit isim, böyle değer çiftleri ise Doğru başlıkları içermeli.
Sorun başka bir yerde olmalı, gönderdiğiniz kod tamamen geçerli ve çalışıyor. Lütfen dosyanızı nasıl okuduğunuzu bize gösterin. –
1. "atof", "double" değerini de döndürür: http://pubs.opengroup.org/onlinepubs/007904875/functions/atof.html – ArjunShankar
2. "% d" tamsayılar içindir. '% F' kullanın. – ArjunShankar