파일에서 값을 읽었으며 char *로 저장됩니다. 값은 화폐 번호, #. ##, ##. ## 또는 ###. ##입니다. char *를 계산에 사용할 수있는 숫자로 변환하고 싶습니다. atof 및 strtod를 시도하고 쓰레기 번호를 알려줍니다. 이 작업을 수행하는 올바른 방법은 무엇이며, 내가 잘못하고있는 이유는 무엇입니까?char *를 float 또는 double로 변환
이것은 본질적으로 내가하고있는 것입니다. char * 값은 파일에서 읽습니다. 임시 변수와 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
이
을 금액이 해결 : 여러분 모두, 내가 % d 개 대신 %의 F를 사용하여 didn를 한 감사 '617,451,515,
내 입력 파일은 매우 간단합니다 이름이 같은 값 쌍입니다 올바른 헤더가 포함되어 있습니다.
문제는 다른 곳에 있어야하며 게시 한 코드는 완벽하게 유효하며 작동합니다. 파일을 읽는 방법을 보여주십시오. –
1.'atof'는'double'을 리턴합니다 : http://pubs.opengroup.org/onlinepubs/007904875/functions/atof.html – ArjunShankar
2.'% d'는 정수입니다. '% f'을 사용하십시오. – ArjunShankar