책 내용 질문하기
47쪽 문제1 질문
도서
2021 시나공 정보처리기사 필기
페이지
47
조회수
387
작성일
2021-03-05
작성자
탈퇴*원
첨부파일
10번에서 13번까지 form에 s가 있는데요 S(문자열)를 가져올때 scanf에서는 실제 단어길이보다 더 큰 자릿수를 가져오라고 해도 그 뒤 단어는 제외한채로 공백 전까지만 가져오고 Printf에서는 공백과 그 뒤 단어까지 자릿수내로 포함할 수 있어서help me 를 다 출력하는건가요?
답변
2021-03-09 13:35:40

안녕하세요 길벗수험서 운영팀입니다.

 

비슷합니다.

scanf에서는 구분자까지만을 데이터로 가져옵니다. 어떤 옵션도 없는 경우 공백이나 엔터가 구분자가 되며, 거기까지 가져온 데이터를 바탕으로 길이 제한이 적용되죠. 때문에 길이가 입력된 데이터보다 긴 경우 아무 의미가 없어집니다.

 

printf에서도 구분자까지 데이터를 가져옵니다. 문자 배열에 문자열이 입력되는 경우 문자열의 마지막에 '널문자'라는 구분자가 저장되는데 %s 로 문자열을 출력하게 되면 이 널문자까지의 값들을 출력하게 되는 것이죠.

이렇게 출력할 데이터가 결정되면 그 이후에 길이를 적용하게 되는데,

정수는 자리 확보를, 소수점은 글자 수 제한을 겁니다.

abc를 출력하는데 %8.1s을 적용한다면 화면에 8칸을 확보하여 한 글자만 출력하게 되므로

'       a' 요렇게 출력되겠네요.

 

행복한 하루되세요 :)

 

행복한 하루되세요 :)

  • 관리자
    2021-03-09 13:35:40

    안녕하세요 길벗수험서 운영팀입니다.

     

    비슷합니다.

    scanf에서는 구분자까지만을 데이터로 가져옵니다. 어떤 옵션도 없는 경우 공백이나 엔터가 구분자가 되며, 거기까지 가져온 데이터를 바탕으로 길이 제한이 적용되죠. 때문에 길이가 입력된 데이터보다 긴 경우 아무 의미가 없어집니다.

     

    printf에서도 구분자까지 데이터를 가져옵니다. 문자 배열에 문자열이 입력되는 경우 문자열의 마지막에 '널문자'라는 구분자가 저장되는데 %s 로 문자열을 출력하게 되면 이 널문자까지의 값들을 출력하게 되는 것이죠.

    이렇게 출력할 데이터가 결정되면 그 이후에 길이를 적용하게 되는데,

    정수는 자리 확보를, 소수점은 글자 수 제한을 겁니다.

    abc를 출력하는데 %8.1s을 적용한다면 화면에 8칸을 확보하여 한 글자만 출력하게 되므로

    '       a' 요렇게 출력되겠네요.

     

    행복한 하루되세요 :)

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.