작성
·
21
1
질문 수정 중 실수로 글을 지워 재질문 드립니다.
#include <stdio.h>
int main()
{
const char* mythings[5] = {
"Dancing in the rain",
"Couting apples",
"Watching movies with friends",
"Writing sad letters",
"Studying the C language"
};
char yourthings[5][40] = {
"Studying the C++ language",
"Eating",
"Watching Netflix",
"Walking around till dark",
"Deleting spam emails"
};
const char* temp1 = "Dancing in the rain";
const char* temp2 = "Studying the C language";
printf("%s %u %u\n", mythings[0], (unsigned)mythings[0], (unsigned)temp1);
printf("%s %u %u\n", yourthings[0], (unsigned)yourthings[0], (unsigned)temp2);
printf("\n");
printf("%-30s %-30s\n", "My Things:", "Your Things:");
for (int i = 0; i < 5; i++)
printf("%-30s %-30s\n", mythings[i], yourthings[i]);
printf("\nsizeof mythings:%zd, sizeof your yourthings:%zd\n",
sizeof(mythings), sizeof(yourthings));
for (int i = 0; i < 100; i++)
printf("%c", mythings[0][i]);
printf("\n");
printf("\n");
for (int i = 0; i < 200; i++)
printf("%d", (int)yourthings[0][i]);
printf("\n");
for (int i = 0; i < 200; i++)
printf("%c", yourthings[0][i]);
printf("\n");
printf("\n");
return 0;
}
첨부 이미지는 해당 코드의 마지막 for문 2개의 출력 결과입니다.
강의와 다르게 마지막 for문이 띄어쓰기 없이 출력되고 있는데, 널 문자와 공백 문자가 다른 아스키 값을 가지고 있다는 것을 인지하고 있긴 합니다만, 교수님의 출력과 저의 출력이 달라서 질문드렸습니다.
실행 환경에 따라서 출력이 다를 수 있는 건지, 아님 제가 놓치고 있는 부분이 따로 있는 건지 궁금합니다.
답변 1
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
네, 실행 환경과 콘솔 출력에 관한 설정에 따라서 정렬이나 폰트 등이 다르게 출력될 수 있습니다.
코드의 로직에 따라서 질문자님과 같이 출력되는 것이 옳습니다.
한 번, 해당 강의의 앞 부분에서 다루어진 메모리 디버깅을 통해서 어떤 값이 들어가 있는지 직접 확인해보는 것도 좋은 학습 방법이 될 것 같습니다.