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

책: 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" 문제 풀어보겠습니다.