코딩목표 year 에 주민등록번호 앞자리 6자리 입력
first_name 에 영어로 된 성 입력
grade 에 A,B,C,D,E 중하나 입력
예)
990101
PARK
A
입력하면
PARK990101A
이렇게 출력하는게 목표고
sprintf 함수로 했는데
왜 마지막에 등급이 출력안되고 위 사진처럼
PARK990101?
이렇게 뜨는지 알려줄수 있을까?
코딩목표 year 에 주민등록번호 앞자리 6자리 입력
first_name 에 영어로 된 성 입력
grade 에 A,B,C,D,E 중하나 입력
예)
990101
PARK
A
입력하면
PARK990101A
이렇게 출력하는게 목표고
sprintf 함수로 했는데
왜 마지막에 등급이 출력안되고 위 사진처럼
PARK990101?
이렇게 뜨는지 알려줄수 있을까?
디버그는 해보셨습니까? - dc App
예 해봤는데 잘못된 언어가 들어가있습니다만 뜨네요..
궁금한점 14번째줄 grade 하면 이상한 쓰레기값 출력되는데 grade[0] 하면 원하는 값 출력되는데 왜그런걸까?
sprintf엔 grade를 %c로 받지만 grade는 char*입니다 - dc App
grade를 char형으로 받으려면, 메인에서 입력받을 grade 또한 배열이 아닌 char형이여야겠죠 ㅎㅎ - dc App
근데 어차피 %c는 한글자만 받는거고 grade 자체가 맨 처음 값의 주소값이니 상관없지 않나요?
문자와 문자열은 다름. ㅎㅎ; 그리고 포인터 이해를 잘못했나본데 info 함수 내부에서 %c, grade 해버리면 - dc App
grade는 주소값이 담겨있고 해당 주소값은 숫자임. 컴파일러는 이 숫자 그대로를 문자로 해석하려든다 - dc App
아스키 코드표를 보면 알겠지만 char형에 97을 넣으면 'A'가 된다. 숫자와 문자간 변환이 가능하다는 이야기 - dc App
해서 주소값의 숫자를 읽고(분명 이상한 값임) 이를 char형으로 해석하려는 시도를 할것임. 당연히 이상한값이라 결과도 이상하게나온다 - dc App
grade[100] 에 a를 입력하고 a의 주소값을 Info_student로 넘기는데 그 주소값을 %c로 해석할려니 오류가 생긴다는거죠 ?
ㅇㅇ 주소값에 뭐 16진수로 0x00d14e 이런게 막 들어있을텐데 - dc App
가장 앞바이트(빅/리틀 엔디안 여부에 따라 저중 뭘 읽을지 결정됨)를 읽음(%c는 1바이트짜리 읽으란거니까) - dc App
원하는건 해당 주소에 가서 주소안에 뭐가있는지 보는건데말야. - dc App
0x00de14e 이런식으로 들어가있을텐데 또 char 이니 0x00de14e 중인 4e만 해석되고 그래서 쓰레기값 출력된다는거네요 답변 정말 감사합니다
손으로 달을 가리켰는데 손끝을 보는격이라는것이지 - dc App