몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 0] 문자열 돌리기 {언어 : C언어} 본문

개발 언어 입문/C언어

프로그래머스 [Lv. 0] 문자열 돌리기 {언어 : C언어}

스위태니 2024. 2. 17. 22:48

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181945?language=c

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

#include <stdio.h>
#define LEN_INPUT 11

int main(void) {
    char s1[LEN_INPUT];
    scanf("%s", s1);
    for (int idx = 0; s1[idx] != '\0'; idx++) { // "\0" 대신 '\0' 사용
        printf("%c\n", s1[idx]);
    }
    return 0;
}

풀이 방법

  • "\0"(큰 따옴표)와 '\0'(작은 따옴표) 차이
    • '\0' (널 문자)
      • '\0'는 널 문자(null character)를 나타내며, 문자 리터럴입니다.
      • 이는 문자열의 끝을 나타내는 데 사용되며, 문자의 ASCII 코드 값이 0입니다.
      • C언어에서 문자는 작은따옴표(')로 둘러싸여 표현되며, '\0'는 메모리 상에서 정확히 1바이트를 차지하고, 그 값이 0입니다.
    • "\0" (널 문자열)
      • "\0"는 널 문자를 포함하는 문자열 리터럴입니다.
      • 이 문자열 리터럴은 메모리 상에서 두 바이트를 차지합니다: 하나는 널 문자(\0) 자체를 위한 것이고, 또 하나는 문자열 리터럴의 끝을 나타내는 또 다른 널 종료 문자를 위한 것입니다.
      • C언어에서 문자열은 큰따옴표(")로 둘러싸여 표현되며, 문자열의 끝에는 항상 널 종료 문자(\0)가 추가되어, 문자열의 길이를 나타내는 데 사용됩니다. 따라서 "\0"은 사실상 두 개의 널 문자를 포함하게 되며, 첫 번째 바이트는 직접 명시된 널 문자이고, 두 번째 바이트는 문자열의 끝을 나타내는 널 문자입니다.

느낀점

  • 어렵지만 천천히