

독학&입문 수준인 만큼 어렵지 않은 책으로 기초를 떼려고 구매했다. 방통대다 정처기다 사놓고 쌓아두기만 하고 보질 못하다가 이제사 펴보는 책. 정말 쉽고 간단한 내용부터 설명해주는 입문서로 좋다.

열심히 앞선 예제들을 따라하던 도중 어떤 에러 메시지와 조우했다. 양심없이 나이를 14살이라고 한 탓일까? 프로그램이 터지고 말았다.

그래서, 대체 뭐가 문제인걸까? format parser가 에러를 감지했다고 한다.
나이를 입력하니 터졌고, 포맷의 문제라면 -> scanf_s에서 받는 것에 뭔가 문제가 있을 확률을 고려해보자.
char name[256];
printf("이름이 뭐에요?: ");
scanf_s("%s", name, (unsigned int)sizeof(name));
int age;
printf("나이는 얼마?: ");
scanf_s("%d", &age);
float weight;
printf("몸무게는 얼마?: ");
scanf_s("%.2f", &weight);
double height;
printf("키는 얼마?: ");
scanf_s("%.1lf", &height);
scanf_s("%.2f", &weight); 라고 쓴 것이 문제였다... 포맷을 지정해주는 건 scanf가 아니라 printf에서 하는건데 착각과 귀찮음의 조화로 코드를 복붙한 탓인지 터지고 말았다.
문제가 된 부분은 %f로 고쳤다. 고치는 김에 아래에 있는 .1lf도 냅두면 터질 게 분명헤 lf로 고쳐줬다. 이후 정상 동작했다.