C언어 날짜 출력하기 (년도, 월, 일) ([Error] invalid digit "8" in octal constant 해결법)

sTaedy·2022년 3월 12일
0

프로그래밍기초

목록 보기
1/1

8자리 숫자를 입력 받으면 (MMDDYYYY) 그에 따른 년도, 월, 일을 출력하는 것이다.

ex) 05221980 >> 22nd May 1980

그런데 만약 날짜가 1,21,31일이면 앞에 "st"를 붙이고, 2,22일이면 "nd"를 붙이고, 3, 23일이면 "rd"를 붙여서 날짜를 표시해야 한다. (나머지 날짜는 "th"붙이기)

출력 예시

Enter a date in numerical form(MMDDYYYY): 05051980

The date you entered is: 5th May 1980

End of program

#include <stdio.h>

int main(void) {

int m, d, y;

printf("Enter a date in numerical form(MMDDYYYY): ");

scanf("%02d%02d%04d", &m, &d, &y);

switch (d)

{

case 1:

printf("1st ");

break;

case 21:

printf("21st ");

break;

case 31:

printf("31st ");

break;

case 2:

printf("2nd ");

break;

case 22:

printf("22nd ");

break;

case 3:

printf("3rd ");

break;

case 23:

printf("23rd ");

break;

default:

printf("%dth ", d);

break;

}

switch (m)

{

case 1:

printf("January ");

break;

case 2:

printf("Fabruary ");

break;

case 3:

printf("March ");

break;

case 4:

printf("April ");

break;

case 5:

printf("May ");

break;

case 6:

printf("June ");

break;

case 7:

printf("July ");

break;

case 8:

printf("August ");

break;

case 9:

printf("September ");

break;

case 10:

printf("October ");

break;

case 11:

printf("November ");

break;

case 12:

printf("December ");

break;

}

printf("%d\n", y);

printf("End of program");

return 0;

}

저는 'switch문'을 사용하여 월과 일에 해당하는 값을 계산하게끔 하였습니다.

-switch문을 쓸 때 주의할 점

case이름을 적을 때, 01,02로 입력하면, '8진수'로 적용이 되어, case 08부터 에러가 난다.

([Error] invalid digit "8" in octal constant)

그렇기 때문에 꼭! case 1, case2, ... 로 사용할 것!

  • 8숫자를 각각의 값으로 입력받고 싶을 때,(이 문제에선 월,일,년도)

scanf("%02d%02d%04d", &m, &d, &y); m,d,y가 각각 2개, 2개, 4개의 숫자를 받게 해줌.

-간단한 문제였지만, case 입력 시 주의할 점과, 숫자들을 몇 개씩 어떻게 받는 지 알아야 해결할 수 있음

profile
항상 꾸준하게 노력하기

0개의 댓글