251218 - 아니, 무슨 assertion이요?

LIHA·2025년 12월 18일
post-thumbnail

근본의 근본의 근본으로 돌아가다. C언어 입문기

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

나는 나이를 입력하고 싶었던 것 뿐인데 - Debug Assertion Failed

열심히 앞선 예제들을 따라하던 도중 어떤 에러 메시지와 조우했다. 양심없이 나이를 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로 고쳐줬다. 이후 정상 동작했다.

profile
갑자기 왜 춤춰?

0개의 댓글