개발기/The C Programming Language

문제풀이 | The C Programming Language (K&R): Exercise 1-2

sync86 2026. 4. 28. 02:54
728x90
반응형

책: The C Programming Language (K&R)

본문의 연습문제는 저작권 이슈로 그 내용을 직접적으로 언급하지 않습니다. 이점 양해 바랍니다.

 


Escape Character는 보이지는 않지만, 터미널 (콘솔)화면에서 각 특수한 기능을 가지고 있는 문자를 뜻합니다.

이번 문제는 Escape Character를 입력해서 어떤 결과가 나오는지 확인하라는 문제인 것 같습니다.

Escape Character는 ""(쌍따옴표) 안에 포함되며, \(역슬래쉬)로 시작합니다.

이후 이 문자로 시작한 다음 문자를 보고 그 기능을 결정하게 됩니다.

그래서 보기엔 2개의 문자지만, 단일 문자로 인식하게 됩니다.

책에서 언급하고 있는 Escape Character는 아래의 표와 같습니다.

Escape Character 설명
\n 줄바꿈
\t 탭
\b 백스페이스
\" "(쌍따옴표) 문자를 출력
\\ \(역슬래쉬) 문자를 출력

\n - 줄바꿈

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\n world\n");
  return 0;
}

 

"hello, word" 예제에서 ,(콤마) 다음에 \n Escape Character 문자로 수정하였습니다.

결과는 아래와 같습니다.

$ ./a.out 
hello,
 world

\t - 탭

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\t world\n");
  return 0;
}

 

"hello, word" 예제에서 ,(콤마) 다음에 \t Escape Character 문자로 수정하였습니다.

결과는 아래와 같습니다.

 

$ ./a.out 
hello,	 world

\b - 백스페이스

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\b world\n");
  return 0;
}

 

"hello, word" 예제에서 ,(콤마) 다음에 \b Escape Character 문자로 수정하였습니다.

결과는 아래와 같습니다.

$ ./a.out 
hello world

\" - "(쌍따옴표) 문자를 출력

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\" world\n");
  return 0;
}

 

"hello, word" 예제에서 ,(콤마) 다음에 \" (쌍따옴표)을 Escape Character 문자로 수정하였습니다.

결과는 아래와 같습니다.

$ ./a.out
hello," world

\\ - \(역슬래쉬) 문자를 출력

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\\ world\n");
  return 0;
}

 

"hello, word" 예제에서 ,(콤마) 다음에 \\ (쌍따옴표)을 Escape Character 문자로 수정하였습니다.

결과는 아래와 같습니다.

$ ./a.out 
hello,\ world

Exercise 1-2는 임의의 문자를 넣어서 테스트 해보라는 의미인 것 같습니다.

임의의 문자를 다 해보는 것은 의미가 없을 것 같습니다.

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello,\c world\n");
  return 0;
}

 

Escape Character을 변경하고 실행했을 때 결과는 아래와 같습니다.

$ ./a.out 
hello,c world

 

제공되지 않는 문자는 위 처럼 "정의되지 않은 동작(Undefined Behavior)"으로 해당 문자를 그대로 출력합니다.

따라서 컴파일할 때 아래와 같은 경고 메시지를 볼 수 있습니다.

$ cc exercise1-2.c 
exercise1-2.c:5:17: warning: unknown escape sequence '\c' [-Wunknown-escape-sequence]
    5 |   printf("hello,\c world\n");
      |                 ^~
1 warning generated.

 

참고: 위 결과는 clang으로 컴파일 했을 때 발생한 경고 메시지입니다.


마무리

이것저것 Escape Character에 랜덤하게 문자를 넣어보고 실험해보면 될 것 같네요.

다음은 "The C Programming Language: Exercise 1-3" 문제 풀어보겠습니다.

728x90
반응형