2013-01-05 3 views
2

텍스트 파일에서 데이터를 읽지 만 float 부분을 float로 가져 오지 못하는 프로그램이 있습니다. 43.23 대신 내 .txt 파일을 읽은 후 43.00을 인쇄합니다. 어디서 잘못 했습니까?파일에서 읽을 때 부동되지 않습니다. C 프로그램

dir[k].age=atol(strtok(NULL,",")); 
    dir[k].weight=atol(strtok(NULL,",")); 
    dir[k].height=atol(strtok(NULL,"\n")); 
+0

로 값을 읽고있다. 따라서 귀하의 질문에 제공된 코드의 약 90 %는 쓸모없는 소음입니다. stackoverflow 사용자는 질문이 간결한 경우 좋은 대답을 제공 할 가능성이 훨씬 높습니다. – stefan

+0

이제는 너무 많이 지워 버렸지 만 올바른 방법을 사용하고 있습니다 ;-) 'weight'와 'height'는 'float'이라는 것을 알아야합니다. 독자는 그것이 현재 무엇인지 알지 못하기 때문에 (그리고 구조체 배열의 사용은 질문과 관련이 없다)'dir [k]'도 제거해야한다. 추신 : 나는 당신을 괴롭히는 것이 아니라 미래에 더 나은 질문을 할 수 있도록 돕기 위해이 글을 쓰고 있습니다. – stefan

+0

감사합니다. 당신의 도움을 주셔서 감사합니다. 질문을 고치고 싶었지만이 시점에서 내가 뭘하고 있었는지 잊어 버렸습니다. –

답변

4
dir[k].weight=atol(strtok(NULL,",")); 
dir[k].height=atol(strtok(NULL,"\n")); 

atollong 읽습니다. 아마도 atof을 원했을 것입니다.

3
dir[k].weight=atol(strtok(NULL,",")); 
dir[k].height=atol(strtok(NULL,"\n")); 

정수로 변환하는 함수를 사용하므로 분수 부분을 처리하는 방법을 알 수 없습니다. 대신 ato* 기능과는 달리 오류 확인을 허용하는 strtof을 사용하십시오. 여기

1

:

dir[k].weight=atol(strtok(NULL,",")); 
dir[k].height=atol(strtok(NULL,"\n")); 

당신은 이미 원치 않는 행동의 소스로 코드의 _reading_ 부분을 확인 긴

관련 문제