답변 3
0
감사합니다! 추가로 아스키코드 기출문제 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에 해당하는 아스키코드가 됩니다.
printf 자체는 일자 출력 맞습니다. 어디를 보고 계시는 걸까요? 분, 초대를 말씀해주세요.