책 내용 질문하기
질문있습니다
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
206
조회수
80
작성일
2018-06-30
작성자
탈퇴*원
첨부파일

저번에 질문 올렸는데 답변이 불충분한것 같아 다시 질문드립니다

1권 206페이지 C코드에 대해서 질문있습니다

C언어에서 문자배열은 끝에 항상 \0(널문자)가 붙는데 자동으로 붙는건지, 아니면 코딩시 직접 입력해야하는지 궁금합니다.

1권 52페이지에 의하면 널문자는 자동으로 붙는것같은데 자동으로 붙는게 맞다면 왜 munja[1]='\0'; 을 하는건가요?

munja에 실질적으로 들어있는 문자는 1글자라서 이를 배열로 만들어주기위해 별도로 munja[1]='\0';을 쓴건가요?

널문자를 추가함으로서 배열이 아닌 문자열로 인식시킨다는 것은 알고 있습니다.

널문자를 별도로 입력해야한다면 배열 a의 경우는 scanf("%s", a); 에서 입력을 한건가요? 아니면 "%s"에 의해 배열 a에 문자열로 인식시켰으므로 \0이 자동으로 붙은건가요?

답변
2018-07-02 10:33:38

안녕하세요.

52쪽과 같이 문자형 배열에 "KOREA"와 같이 큰따옴표로 묶인 글자를 저장하면 문자열로 처리됩니다.

배열의 마지막에 자동으로 '\0'이 추가되어 문자열로 인식됩니다.

206쪽에서는 큰따옴표로 묶인 글자를 배열에 저장하는 것이 아니라

배열 요소 값을 직접 저장하는 형태인데, 이런 경우 문자열로 인식되도록 하려면

munja[1] = '\0'; 와 같이

배열에 저장된 문자들 끝에 '\0'을 저장하여 문자열로 인식되도록 해야 합니다.

206쪽에서 하나의 문자만을 저장하고도 이를 문자열로 인식시키려고 끝에 '\0'을 저장한 이유는

왼쪽 전문가의 조언에서도 언급했듯이 atoi() 함수를 사용하기 위함입니다.

오늘도 즐거운 하루 되세요.

  • *
    2018-07-02 10:33:38

    안녕하세요.

    52쪽과 같이 문자형 배열에 "KOREA"와 같이 큰따옴표로 묶인 글자를 저장하면 문자열로 처리됩니다.

    배열의 마지막에 자동으로 '\0'이 추가되어 문자열로 인식됩니다.

    206쪽에서는 큰따옴표로 묶인 글자를 배열에 저장하는 것이 아니라

    배열 요소 값을 직접 저장하는 형태인데, 이런 경우 문자열로 인식되도록 하려면

    munja[1] = '\0'; 와 같이

    배열에 저장된 문자들 끝에 '\0'을 저장하여 문자열로 인식되도록 해야 합니다.

    206쪽에서 하나의 문자만을 저장하고도 이를 문자열로 인식시키려고 끝에 '\0'을 저장한 이유는

    왼쪽 전문가의 조언에서도 언급했듯이 atoi() 함수를 사용하기 위함입니다.

    오늘도 즐거운 하루 되세요.

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