Tôi có một giá trị mà tôi đã đọc từ một tệp và được lưu trữ dưới dạng char *. Giá trị là số tiền, #. ##, ##. ##, hoặC###. ##. Tôi muốn chuyển đổi char * thành một số tôi có thể sử dụng trong tính toán, tôi đã thử atof và strtod và họ chỉ cho tôi số lượng rác. Cách chính xác để làm điều này là gì, và tại sao cách tôi làm sai?Chuyển đổi char * để thả nổi hoặc gấp đôi
Đây thực chất là những gì tôi đang làm, chỉ giá trị char * được đọc từ một tệp. Khi tôi in ra các biến temp và ftemp chúng chỉ là rác, số âm khổng lồ.
Một Edit:
Tôi đang chạy một cách chính xác này trong 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;
}
và đầu ra của tôi là giá cả: 3344336,000000, 3344336,000000
Edit: Đây là mã của tôi
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);
tập tin đầu vào của tôi là cái tên rất đơn giản, các cặp giá trị như thế này:
NAME|VALUE
NAME|VALUE
NAME|VALUE
với giá trị là đô la số tiền
SOLVED: Cảm ơn tất cả các bạn, tôi đã sử dụng% d thay vì% f và didn' t có các tiêu đề phù hợp.
Sự cố phải ở một nơi khác, mã bạn đăng hoàn toàn hợp lệ và hoạt động. Vui lòng cho chúng tôi biết cách bạn đọc tệp của mình. –
1. 'atof' trả về' double': http://pubs.opengroup.org/onlinepubs/007904875/functions/atof.html – ArjunShankar
2. '% d' là số nguyên. Sử dụng '% f'. – ArjunShankar