본문 바로가기

프로그래밍/C언어

04 제어문자

문자 의미 기능
\n new line 칸을 다음 줄 앞으로 이동
\b backspace 한 칸 뒤로 한 칸 이동
\t tab 일정 간격 띄움
\r carriage return 현재 줄의 처음으로 이동
\0 null (0) 문자 출력
\’ singe quote(‘) 작음 따옴표 출력
\” double quote(“) 큰 따옴표 출력
\a alert 벨 소리 발생
\\ backslash 역 슬래시 출력
\f from feed 한 페이지 넘김

제어문자는 암기 과목입니다. 영어뜻으로 유추하는게 그나마 편한 암기법입니다.

출력을 보면 띄어쓰기와 수평 탭등 키보드의 명령 같습니다.

Pure모드의 디스어셈블리를 보면 문자열이 주소로 push되는걸 알수있습니다.

함수의 시작은 push ebp/ mov ebp,esp로 암기하는데 편합니다. 스택 ebp의 위치를 ebp가 가르키게합니다.

ASCII는 영어및 문자의 규칙입니다. 한글은 2바이트입니다.

https://charset.fandom.com/ko/wiki/%EA%B5%AD%EA%B0%80_%ED%91%9C%EC%A4%80_%EC%99%84%EC%84%B1%ED%98%95_%EB%8C%80%EC%A1%B0%ED%91%9C

한글 바이트는 위를 참고하시면 됩니다. ASCII는 구글링으로 충분히 얻을수있습니다.

ASCII (1977/1986)
  _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_
0
NUL
0000
SOH
0001
STX
0002
ETX
0003
EOT
0004
ENQ
0005
ACK
0006
BEL
0007
BS
0008
HT
0009
LF
000A
VT
000B
FF
000C
CR
000D
SO
000E
SI
000F
1_
16
DLE
0010
DC1
0011
DC2
0012
DC3
0013
DC4
0014
NAK
0015
SYN
0016
ETB
0017
CAN
0018
EM
0019
SUB
001A
ESC
001B
FS
001C
GS
001D
RS
001E
US
001F
2_
32
SP
0020
!
0021
"
0022
#
0023
$
0024
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
:
003A
;
003B
<
003C
=
003D
>
003E
?
003F
4_
64
@
0040
A
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
I
0049
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
5_
80
P
0050
Q
0051
R
0052
S
0053
T
0054
U
0055
V
0056
W
0057
X
0058
Y
0059
Z
005A
[
005B
\
005C
]
005D
^
005E
_
005F
6_
96
`
0060
a
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
h
0068
i
0069
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
7_
112
p
0070
q
0071
r
0072
s
0073
t
0074
u
0075
v
0076
w
0077
x
0078
y
0079
z
007A
{
007B
|
007C
}
007D
~
007E
DEL
007F

ASCII는 옛날 ASCII에서 발전되어 변한 문자들이 있습니다.(TMI)

출처:위키(https://en.wikipedia.org/wiki/ASCII#cite_note-49)

ASCII - Wikipedia

ASCII From Wikipedia, the free encyclopedia Not to be confused with MS Windows-1252 or other types of extended ASCII . This article is about the character encoding. For other uses, see ASCII (disambiguation) . ASCII ( / ˈ æ s k iː / ( listen ) ASS -kee ), [3] : 6 abbreviated from American Standard C...

en.wikipedia.org

메모리 기능으로 문자열을 보면 c1 a6 be ee b9 ae c0 da c0 c7 20 bb e7 bf eb 0a 00

위에 있는 사이트들을 참고하여 해석하면 제어문자의(space)사용(줄넘기기[Enter])입니다.

문자열의 끝은 00입니다.

위에 보이는 16진수 코드가 한글입니다. 중간에 20(space) 끝에 0a(\n)[Line Feed]

한글은 한글자당 2바이트 입니다 (c1 a6 = 제), (be ee = 어) 이런 형식입니다.

31 09 32 0a 00

09는 ascii기준 (Horizontal Tab)[수평 탭] 0a는 (Line Feed) 개행(다음행으로 이동)

나머지 숫자 문자들은 ASCII에 포함됩니다.

1(31 00)을 출력한다음에 \n없으니 다음행으로 넘어가지 않고

다음 printf전에 문자열을 보면 32 34 08 33 34 0a 00

Ascii기준 08(Backspace) 0a(Line Feed)

32 32 33 0d 31 0a 00

Ascii기준 0d는 (carriage return) 0a(Line Feed)

Carriage Return의 경우는 타자기에서 시작된 것 같다

다음 으로 돌아갈때 줄만 이동하는게 아닌 시작으로 돌아간다.

지금은 잊혀졌을까 익숙해져을까 사라진 지식인가

Ascii기준 20(Space) 07(Bell) 0a(Line Feed)

문자열에서 제어코드는 ascii코드를 사용한다.(영어와 숫자도 1바이트 ascii를 사용한다.)

한글은 하나당 2바이트다.

코드는 규칙이다. 너무 많은 규칙이다. 웃고 싶다.

함수에도 끝이 있다.

스택을 반환하고 끝낸다.

'프로그래밍 > C언어' 카테고리의 다른 글

06 변수  (0) 2021.08.06
05 사칙연산  (0) 2021.08.06
03 main 함수  (0) 2021.08.06
02 Visual Studio 디버깅(초보자X)  (0) 2021.08.06
01 Visual Studio 2019 세팅(빈 프로젝트 생성)  (0) 2021.08.03