인프런 커뮤니티 질문&답변

SS0615님의 프로필 이미지
SS0615

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

ASCII 코드

아스키코드

해결된 질문

작성

·

87

0

아스키코드 14:52에서

문자 O와 숫자 7을 더하면 왜 문자 7이 되는 걸까요..??

답변 3

0

SS0615님의 프로필 이미지
SS0615
질문자

엇 그리고 출력 답이 개행이 돼서 나오는데 prinf는 일자로 출력되는 게 아닌 걸까요..?!

주말코딩님의 프로필 이미지
주말코딩
지식공유자

printf 자체는 일자 출력 맞습니다. 어디를 보고 계시는 걸까요? 분, 초대를 말씀해주세요.

주말코딩님의 프로필 이미지
주말코딩
지식공유자

KOREA 문제라면 printf문 안에 개행문자 다 들어가있습니다. ('\n')

0

SS0615님의 프로필 이미지
SS0615
질문자

감사합니다! 추가로 아스키코드 기출문제 17:39 초에서

P+1 은 KOREA에서 두번째 부터 뒤에 문자를 쭉 출력하는 것이고,

*p와 *p+3, p+4는 해당하는 번째의 값 하나만 출력인걸까요?

주말코딩님의 프로필 이미지
주말코딩
지식공유자

아뇨, 이 부분에서 보셔야할 것은 출력 템플릿에 있는 출력표시 방법입니다.

%s와 %c의 차이입니다. 두 개는 전혀 다르게 동작합니다.

 

%s는 주소값(포인터 or 배열 이름 등)을 받아야하고, 내가 지금 가리키고 있는 부분에서 '\0'을 만나기 직전까지 모두 출력하라는 구문입니다.

%c는 값이 와야하고, 해당 값 문자 딱 1개만 출력합니다.

 

#include <stdio.h>

int main() {
    // 문자열을 가리키는 포인터 변수 선언 및 초기화
    char *str = "Hello, World!";

    // %s와 %c를 사용한 출력
    printf("문자열 전체 출력 (%%s): %s\n", str);    // %s: 문자열 전체 출력
    printf("문자 하나씩 출력 (%%c): %c %c %c %c %c\n", str[0], str[1], str[2], str[3], str[4]);  // %c: 각각의 문자 출력

    return 0;
}

 

출력값:

문자열 전체 출력 (%s): Hello, World!
문자 하나씩 출력 (%c): H e l l o

 

위의 예제는 %s 부분에 포인터 이름(가리키고 있는 주소)이 왔습니다. 이것은 배열의 이름이 직접와도 정확히 동일하게 동작합니다. 하지만 %c의 경우 딱 1개의 문자를 출력하기 위해 정확하게 "값"이 와야 합니다. 주소가 아닙니다. 주의하세요.

 

(기타: 출력 템플릿 안에 %가 2개인 이유는 % 자체를 문자로 출력하려면 그렇게 표기해야 합니다. 오타가 아니에요.)

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

영어 O 아니고 숫자 0을 문자로 바꾼 것입니다. '0'

아스키코드에 '왜'라는 것은 없습니다.

컴퓨터를 설계한 사람들이 그렇게 작성해둔 것입니다. 우리 모두의 합의이죠.

그냥 받아들여야 하는 부분입니다.

 

문자 형태의 0의 아스키코드에서 7을 더하면 문자 7에 해당하는 아스키코드가 됩니다.

SS0615님의 프로필 이미지
SS0615

작성한 질문수

질문하기