다음 제어 문자의 의미는 무엇입니까?
캐리지 리턴
줄 바꿈
용지 공급
다음 제어 문자의 의미는 무엇입니까?
캐리지 리턴
줄 바꿈
용지 공급
답변:
캐리지 리턴 은 아래쪽으로 진행하지 않고 현재 줄의 시작 부분으로 돌아가는 것을 의미합니다. 이름은 화일에 모니터가 드물었으므로 이름은 프린터 운송에서 비롯됩니다. 이것은 일반적으로 \r
, 약어 CR 로 이스케이프되며 ASCII 값 13
또는을 갖습니다 0x0D
.
줄 바꿈 은 다음 줄로 내려가는 것을 의미합니다. 그러나 용도와 이름이 변경되었습니다. "줄 바꿈"으로 사용되며 행 을 종료 합니다 (일반적으로 구분 행 과 혼동 됨 ). 이 이름은 일반적으로 LF 또는 NL로 \n
생략 되며 ASCII 값 또는을 갖습니다 . CRLF (CRNL은 아님)가 쌍에 사용됩니다.10
0x0A
\r\n
.
용지 공급 은 다음 "페이지"로 내려가는 것을 의미합니다. 일반적으로 페이지 구분 기호로 사용되었지만 이제는 섹션 구분 기호로도 사용됩니다. 논리적으로 독립적 인 기능 또는 기능 그룹을 나누기 위해 소스 코드에서 일반적으로 사용되지 않습니다. 텍스트 편집기는 "페이지 나누기 삽입"시이 문자를 사용할 수 있습니다. 이것은 일반적으로 FF 로 \f
약칭 되며 ASCII 값 또는을 갖습니다 .12
0x0C
제어 문자로서 다양한 방식으로 해석 될 수 있습니다.
가장 일반적인 차이점 (그리고 아마도 걱정할만한 유일한 것)은 Windows의 CRLF, Unix와 같은 NL 및 구형 Mac의 CR로 끝납니다 (OS X의 상황은 Unix와 비슷하게 바뀌 었습니다). LF에서 NL 로의 의미 이동은 정확히 동일한 문자에 대해 Windows와 Unix의 차이점을 나타냅니다. (Windows는 물론 Unix보다 최신 버전이므로 이러한 의미 적 변화를 채택하지 않았습니다. CR을 사용하는 Mac의 역사를 모르겠습니다.) 많은 텍스트 편집기는이 세 가지 형식의 파일을 모두 읽고 변환 할 수 있습니다. 모든 유틸리티가 가능한 것은 아닙니다.
양식 피드는 좀 더 흥미 롭습니다 (직접 사용하는 경우는 드물지만). 페이지 구분 기호의 일반적인 정의를 사용하면 줄 사이 (예 : 줄 바꿈 순서 NL, CRLF 또는 CR 이후) 또는 시작 또는 시작시에만 올 수 있습니다. 파일의 끝.
\x0c
아닌가요?
\r
캐리지 리턴이며 커서를 다음과 같이 다시 움직입니다.
printf("stackoverflow\rnine")
ninekoverflow
는 "stackoverflow"의 시작 부분으로 커서를 이동했으며 "9"의 길이가 4 자이므로 시작 4 개의 문자를 덮어 씁니다.
\n
줄 바꿈을 바꾸고 커서를 줄 바꿈의 시작 부분으로 가져 오는 줄 바꿈 문자입니다.
printf("stackoverflow\nnine")
stackoverflow
nine
\f
양식 피드이며 사용이 더 이상 사용되지 않지만 다음과 같이 들여 쓰기를 제공하는 데 사용됩니다.
printf("stackoverflow\fnine")
stackoverflow
nine
내가 이렇게 쓰면
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
coreutils의 유틸리티를 사용하여 Linux 쉘에서 동일한 작업을 수행 할 수 있습니다 . 또는 echo -en
bash 내장을 사용 하는 경우도 있습니다.
\f
것은 실제로 \v
수직 탭으로 콘솔에서 모두 동일하게 보입니다.
printf("123\f456\f789");
콘솔에 /> <bold> 123456789 </ bold>를 표시합니다.
Wikipedia를 살펴보십시오 .
ASCII 또는 호환 문자 세트를 기반으로하는 시스템은 LF (줄 바꿈, '\ n', 0x0A, 10 진수 10) 또는 CR (캐리지 리턴, '\ r', 0x0D, 10 진수 13) 또는 개별적으로 CR을 사용합니다. LF (CR + LF, 0x0D 0x0A). 이러한 문자는 프린터 명령을 기반으로합니다. 줄 바꿈은 한 줄의 용지가 프린터에서 공급되어야하고 캐리지 리턴은 프린터 캐리지가 현재 줄의 시작 부분으로 돌아 가야한다는 것을 나타냅니다.
\f
페이지 나누기에 사용됩니다. 콘솔에서 아무 효과도 볼 수 없습니다. 그러나 파일 에서이 문자 상수를 사용하면 차이점을 볼 수 있습니다.
다른 예는 출력을 파일로 리디렉션 할 수 있으면 파일을 쓰거나 파일 처리를 사용할 필요가 없다는 것입니다.
예를 들어 :
이 코드를 C ++로 작성
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
당신이를 컴파일 할 때이 EXE 파일 생성 (예를 들어. abc.exe
)
다음을 사용하여 출력을 파일로 리디렉션 할 수 있습니다.
abc > xyz.doc
hellooo와 hiiii ...xyz.doc
사이의 실제 페이지 나누기를 볼 수 있는 파일을 엽니 다 .
위의 정보 외에도 LF (\ n) 및 CR (\ r)에 대한 흥미로운 기록이 있습니다. [원저자 : 阮一峰 출처 : http://www.ruanyifeng.com/blog/2006/04/post_213.html] 컴퓨터가 나오기 전에 Teletype Model 33이라는 텔레 프린터 유형이있었습니다. 각각 10 인쇄 할 수 있습니다. 둘째. 그러나 이것에 대한 한 가지 문제가 있습니다. 각 줄 인쇄를 마친 후 다음 줄로 이동하는 데 0.2 초가 걸립니다. 이는 2 자 인쇄 시간입니다. 이 0.2 초 동안 새 문자가 전송되면이 새 문자가 손실됩니다.
그래서 과학자들은이 문제를 해결하는 방법을 찾았고, 각 줄 뒤에 두 개의 끝 문자를 추가했습니다. 하나는 '캐리지 리턴'입니다. 이는 프린터가 프린트 헤드를 왼쪽으로 가져 오도록 지시합니다.; 다른 하나는 '줄 바꿈'이며 프린터는 용지를 한 줄 위로 이동하도록 지시합니다.
나중에 컴퓨터가 대중화되면서이 두 개념은 컴퓨터에서 사용됩니다. 당시 저장 장치는 매우 비 쌌기 때문에 일부 과학자들은 각 줄의 끝에 두 문자를 추가하는 것이 비싸며 하나는 충분하므로 어느 것을 사용 해야하는지에 대한 몇 가지 주장이 있습니다.
UNIX / Mac 및 Linux에서는 각 줄 끝에 '\ n'이, Windows에서는 각 줄 끝에 '\ r \ n'이 있습니다. 이 사용으로 인해 Windows에서 열면 UNIX / Mac의 파일이 한 줄에 표시됩니다. Windows의 파일은 UNIX 또는 Mac에서 열 경우 각 줄 끝에 ^ M이 하나씩 있습니다.
WRITE.EXE
(일명 워드 패드)는 잘 표시 할 수 있습니다.
오래된 용지 프린터 터미널에서 다음 줄로 진행하려면 프린트 헤드를 수평 스캔 범위의 시작 (캐리지 리턴)으로 다시 이동하고 인쇄중인 용지 롤을 올리는 (라인 피드) 두 가지 작업이 필요했습니다.
우리는 더 이상 종이 프린터 터미널을 사용하지 않기 때문에 이러한 작업은 더 이상 관련이 없지만 신호를 보내는 데 사용되는 캐릭터는 다양한 화신에 갇혀 있습니다.
IBM 1403 임팩트 프린터를 고려하십시오. CR은 프린트 헤드를 줄의 시작 부분으로 옮겼지만 용지를 전진시키지 않았습니다. 이를 통해 "중복 인쇄"가 가능하여 한 줄에 여러 줄의 출력을 배치 할 수 있습니다. 밑줄과 같은 것은 BOLD 인쇄와 마찬가지로 이런 식으로 달성되었습니다. LF는 종이를 한 줄 발전 시켰습니다. CR이없는 경우 LF가 프린트 헤드를 움직이지 않았기 때문에 다음 행이 지그재그로 인쇄됩니다. FF는 다음 페이지로 용지를 전진 시켰습니다. 또한 일반적으로 프린트 헤드를 새 페이지의 첫 번째 줄의 시작 부분으로 옮겼지만 CR이 필요할 수 있습니다. 확실히, 대부분의 프로그래머는 FF에 의해 생성 된 추가 CR이 중요하지 않기 때문에 페이지의 마지막 줄 끝에서 CRLF 대신 CRFF를 코딩했습니다.
요약하자면 :
Carriage_return ( \r
또는 0xD
)에서 제어권을 시작 으로 같은 라인 .
Line_Feed ( \n
또는 0xA
) : 다음 줄 을 시작할 때 제어 합니다 .
(form_feed \f
또는 0xC
)에서 제어권을 시작 으로 다음 페이지 .
보충으로
1, 캐리지 리턴 : 인쇄 위치를 현재 의 시작으로 변경하는 프린터 용어입니다 줄 입니다. 컴퓨터 세계에서, 그것은 대부분의 경우 현재 줄의 시작으로 돌아가는 것을 의미하지만 거의 새로운 줄을 의미합니다.
2, 줄 바꿈 : 용지 한 줄 진행을 의미하는 프린터 용어입니다. 따라서 캐리지 리턴과 줄 바꿈이 함께 사용되어 새 줄의 시작 부분에서 인쇄를 시작합니다. 컴퓨터 세계에서는 일반적으로 개행과 동일한 의미를 갖습니다.
3, 용지 공급 : 프린터 용어이므로이 스레드 의 설명 이 마음에 듭니다 .
1980 년대 스타일의 프린터를 프로그래밍하는 경우 용지가 배출되고 새 페이지가 시작됩니다. 당신은 그것을 절대 필요로하지 않을 것이라고 확신합니다.
거의 사용되지 않으며 Escape sequence \ f-form feed-정확히 무엇입니까? 자세한 설명은.
일부 플랫폼에서는 CR 또는 LF 또는 CRLF를 사용하여 줄 바꿈을 나타낼 수 있지만 다른 플랫폼에서는 줄 바꿈을 사용할 수 없습니다. 자세한 내용은 Wiki Newline 을 참조하십시오.
LF : Multics, Unix 및 Unix 계열 시스템 (Linux, OS X, FreeBSD, AIX, Xenix 등), BeOS, Amiga, RISC OS 및 기타
CR : Commodore 8 비트 시스템, Acorn BBC, ZX Spectrum, TRS-80, Apple II 제품군, Oberon, 최대 버전 9까지의 기존 Mac OS, MIT Lisp Machine 및 OS-9
RS : QNX 사전 POSIX 구현
0x9B : ASCII의 ATASCII 변형 (10 진수 155)을 사용하는 Atari 8 비트 시스템
CR + LF : Microsoft Windows, DOS (MS-DOS, PC DOS 등), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC 및 기타 초기 비 유닉스 및 비 IBM OS
LF + CR : Acorn BBC 및 RISC OS 스풀 텍스트 출력.