sourcecode

'\r' 이스케이프 시퀀스의 용도는 무엇입니까?

copyscript 2022. 11. 26. 08:49
반응형

'\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가 말했듯이\rexcape 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

반응형