안녕하세요 길벗수험서 운영팀입니다.
비슷합니다.
scanf에서는 구분자까지만을 데이터로 가져옵니다. 어떤 옵션도 없는 경우 공백이나 엔터가 구분자가 되며, 거기까지 가져온 데이터를 바탕으로 길이 제한이 적용되죠. 때문에 길이가 입력된 데이터보다 긴 경우 아무 의미가 없어집니다.
printf에서도 구분자까지 데이터를 가져옵니다. 문자 배열에 문자열이 입력되는 경우 문자열의 마지막에 '널문자'라는 구분자가 저장되는데 %s 로 문자열을 출력하게 되면 이 널문자까지의 값들을 출력하게 되는 것이죠.
이렇게 출력할 데이터가 결정되면 그 이후에 길이를 적용하게 되는데,
정수는 자리 확보를, 소수점은 글자 수 제한을 겁니다.
abc를 출력하는데 %8.1s을 적용한다면 화면에 8칸을 확보하여 한 글자만 출력하게 되므로
' a' 요렇게 출력되겠네요.
행복한 하루되세요 :)
행복한 하루되세요 :)
-
관리자2021-03-09 13:35:40
안녕하세요 길벗수험서 운영팀입니다.
비슷합니다.
scanf에서는 구분자까지만을 데이터로 가져옵니다. 어떤 옵션도 없는 경우 공백이나 엔터가 구분자가 되며, 거기까지 가져온 데이터를 바탕으로 길이 제한이 적용되죠. 때문에 길이가 입력된 데이터보다 긴 경우 아무 의미가 없어집니다.
printf에서도 구분자까지 데이터를 가져옵니다. 문자 배열에 문자열이 입력되는 경우 문자열의 마지막에 '널문자'라는 구분자가 저장되는데 %s 로 문자열을 출력하게 되면 이 널문자까지의 값들을 출력하게 되는 것이죠.
이렇게 출력할 데이터가 결정되면 그 이후에 길이를 적용하게 되는데,
정수는 자리 확보를, 소수점은 글자 수 제한을 겁니다.
abc를 출력하는데 %8.1s을 적용한다면 화면에 8칸을 확보하여 한 글자만 출력하게 되므로
' a' 요렇게 출력되겠네요.
행복한 하루되세요 :)
행복한 하루되세요 :)