fscanf 사용 시, 소수 읽어오는 법
떠나간그놈
질문 제목 :
fscanf 사용시 오류
질문 요약 :
fscanf로 파일에 쓴 txt읽어올 때, data 형 선언에 따라 결과가 달라지는 이유를 모르겠네요.
질문 내용 :
0629test.txt 는 아래와 같이 작성한 후 fscanf를 테스트 했습니다.
0
47
1
2
---------------------------------------------------------------
#include stdio.h
#include stdlib.h
void main()
{
int a, c;
int b; //double b; =double b;로 선언하면 결과이상;;ㅠㅠ
FILE* fpOut;
fpOut = fopen(0629test.txt., r);
fscanf(fpOut, %d %d %d, &a, &b, &c);
printf(a=%d, b=%d, c=%d, a, b, c );
}
main함수 두번째 줄에서처럼,
b를 이렇게 double로 하면 c를 출력한 결과가 이상해요.
쓰레기값이 출력되는 듯 합니다.ㅠㅠ
(출력: a= 0, b= 47, c=-858993460)여기서,
double b;= int b; 로 고치면
결과 정상적으로 나옵니다!! 왜 그런 걸까요?;;
(출력: a= 0, b= 47, c=1)
왜 그런건지 아시는 분 조언 부탁드려요~~
-
영글
float형에 입력받을 때는 \%f\
double형에 입력받으려면 \%lf\
int 형에는 \%d\입니다.
float나 double형을 출력할 떄는 \%f\
int형을 십진수로 출력할 때는 \%d\입니다. -
아이폰
%f로 고치면 소수가 출력되는건 확인했는데요, 위와 같은 문제는 여전히 발생한답니다.ㅠㅠ
-
Glisten
%d - %f로 하시면 되지 않나요?