'\r' 이스케이프 시퀀스의 용도는 무엇입니까?
C코드는 다음과 같습니다.
#include<stdio.h>
int main()
{
printf("Hey this is my first hello world \r");
return 0;
}
사용하였습니다.\r
탈출 시퀀스를 실험으로 삼습니다.코드를 실행하면 다음과 같은 출력이 표시됩니다.
o world
이고, 그 입니까?\r
확확??
온라인 컴파일러에서 동일한 코드를 실행하면 다음과 같은 출력이 나타납니다.
Hey this is my first hello world
는 왜 요?\r
\r
는 캐리지 리턴 문자입니다.단말기 에뮬레이터에게 행의 선두에서 커서를 이동하도록 지시합니다.
커서는 다음 문자가 렌더링되는 위치입니다.
래 a a a, a a a a a a a를 인쇄하는 것.\r
터미널 에뮬레이터의 현재 회선을 덮어쓸 수 있습니다.
톰 지치는 당신 프로그램의 출력이 왜o world
그 사이에\r
줄의 끝에 있고 그 이후에는 아무것도 인쇄하지 않습니다.
프로그램이 종료되면 셸에서 명령 프롬프트가 출력됩니다.커서가 놓여진 위치에 단말기가 렌더링합니다.프로그램은 행의 선두에 커서를 두기 때문에 명령 프롬프트는 인쇄한 행을 부분적으로 덮어씁니다. 뒤에 프롬프트가 표시된 를 알 수 있습니다.o world
.
말씀하신 온라인 컴파일러는 원시 출력을 브라우저로 출력합니다.브라우저는 제어문자를 무시하기 때문에\r
과가없없 없없없다다
https://en.wikipedia.org/wiki/Carriage_return 를 참조해 주세요.
.\r
:
#include <stdio.h>
#include <unistd.h>
int main()
{
char chars[] = {'-', '\\', '|', '/'};
unsigned int i;
for (i = 0; ; ++i) {
printf("%c\r", chars[i % sizeof(chars)]);
fflush(stdout);
usleep(200000);
}
return 0;
}
합니다.-
\
|
/
하는 위해 |
터미널에 있습니다.
이 인쇄 입니다."Hey this is my first hello world "
커서를 줄의 선두로 되돌립니다.이 화면이 화면에 어떻게 표시되는지는 환경에 따라 달라집니다.문자열의 선두가 명령줄 프롬프트와 같은 무언가에 의해 덮어쓰기되고 있는 것 같습니다.
'\r'은 "Carriage Return"을 의미합니다.타자기나 아주 오래된 프린터가 있던 시대의 유물이다.가장 좋은 예는 Windows 및 기타 DOSy OS에서 새로운 행이 "\r\n"로 지정됩니다.새로운 행을 시작하기 위해 오래된 프린터에 송신되는 순서는 다음과 같습니다.먼저 인쇄 헤드를 선두로 되돌린 후, 1 아래로 내려갑니다.
OS마다 다른 줄바꿈 시퀀스가 사용됩니다.Linux 및 OSX에서는 '\n'만 사용합니다.오래된 Mac OS에서는 '\r'만 사용합니다.위키피디아는 더 완전한 목록을 가지고 있지만, 그것들은 중요한 것이다.
이게 도움이 됐으면 좋겠네요!
PS: 왜 그런 이상한 출력이 나오는지...콘솔은 "cursor"를 줄의 선두로 되돌린 후 첫 번째 비트를 공백 또는 summat으로 덮어씁니다.
\r
커서를 줄의 선두로 이동합니다.
줄 바꿈은 시스템에 따라 다르게 관리됩니다.일부만 사용\n
(회선 피드, 예를 들어 Unix), 일부 용도(\r
예를 들어 OS X afaik 이전의 MacOS) 및 일부 용도\r\n
(Windows afaik 등).
amaud576875가 말했듯이\r
excape sequence는 Enter 키를 누르는 것과 마찬가지로 캐리지 리턴을 나타냅니다.하지만 어떻게 "o world"를 얻었는지 잘 모르겠어요. "my first hello world"를 얻은 다음 새로운 행을 얻어야 합니다.사용하고 있는 operating system(Mac을 사용하고 있습니다)에 따라서는,\n
대신\r
.
이것은 구식 테크놀로지입니다.프린터의 오래된 패션 타자기 스타일.종이를 전진시키는 롤러(플래튼)와 잉크 원단에 금속 키를 두들기는 프린트 헤드가 있었다.
\r 인쇄 헤드를 왼쪽으로 되돌립니다.
\n 플래튼을 한 줄 전진시킵니다.
\n이 발행되지 않은 경우 행 위에 있는 것을 입력합니다(대부분 텍스트 밑줄에 사용).
당신의 질문에 답하기 위해
이 무슨 소용인가
\r
?
FTP, HTTP 및 SMTP와 같은 많은 인터넷 프로토콜은 캐리지 리턴 및 줄바꿈으로 구분된 행으로 지정됩니다.예를 들어, 이메일을 보낼 때 다음과 같은 코드가 있을 수 있습니다.
fprintf(socket, "RCPT TO: %s\r\n", recipients);
또는 FTP 서버가 권한 거부 오류로 응답하는 경우:
fprintf(client, "550 Permission denied\r\n");
UNIX 플랫폼에서 실행 중이고 DOS 플랫폼에서 열리는 텍스트 파일을 작성해야 할 때 매우 유용합니다.
Unix 는 행 터미네이터로서 「\n」을 사용하고, dos 는 행 터미네이터로서 「\r\n」을 사용하기 때문에, DOS 텍스트 파일을 작성할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7372918/whats-the-use-of-r-escape-sequence
'sourcecode' 카테고리의 다른 글
수집이 비어 있는지 Larabel 확인 (0) | 2022.11.26 |
---|---|
경로를 변경해도 새 페이지의 맨 위로 스크롤되지 않음 (0) | 2022.11.26 |
왜 python은 루프 뒤에 'else'를 사용하는가? (0) | 2022.11.26 |
목록에 항목이 있는 경우 어떻게 삭제합니까? (0) | 2022.11.26 |
Express Router 및 vuex 서비스 및 액션을 사용하여 사용자를 추가하는 방법(사후 요청) (0) | 2022.11.26 |