programing

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

copyandpastes 2021. 1. 17. 12:30
반응형

'\ 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?


\rA는 캐리지 리턴 문자; 터미널 에뮬레이터에게 줄의 시작 부분에서 커서를 이동하도록 지시합니다.

커서가 다음 문자가 렌더링되는 위치입니다.

따라서 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 및 기타 DOSsy OS에서 개행 문자가 "\ r \ n"으로 제공됩니다. 다음은 새 줄을 시작하기 위해 이전 프린터로 보낸 지침입니다. 먼저 프린트 헤드를 처음으로 다시 이동 한 다음 아래로 이동합니다.

다른 OS는 다른 줄 바꿈 시퀀스를 사용합니다. Linux 및 OSX는 '\ n'만 사용합니다. 이전 Mac OS에서는 '\ r'만 사용합니다. Wikipedia 에는 더 완전한 목록이 있지만 중요한 목록입니다.

도움이 되었기를 바랍니다!

추신 : 왜 이상한 출력을 얻었는지에 관해서는 ... 아마도 콘솔이 "커서"를 줄의 시작 부분으로 다시 이동시킨 다음 첫 번째 비트를 공백이나 요약으로 덮어 쓰고있을 것입니다.


\r 커서를 줄의 시작 부분으로 이동합니다.

줄 바꿈은 시스템마다 다르게 관리됩니다. 일부는 \n(예 : Unix와 같은 줄 바꿈), 일부는 사용 ( \r예 : OS X afaik 이전의 MacOS), 일부는 사용 \r\n(예 : Windows afaik)합니다.


amaud576875가 말했듯이 \r이스케이프 시퀀스는 Enter 키를 누르는 것과 유사한 캐리지 리턴을 의미합니다. 그러나 어떻게 "o world"를 얻을 수 있는지 잘 모르겠습니다. 당신은 (그리고 나는) "my first hello world"와 새로운 라인을 받아야합니다. 사용중인 운영 체제 (Mac을 사용하고 있음) \n에 따라 \r.


이것은 구식 타자기 스타일의 프린터입니다. 종이를 전진시키는 롤러 (평판)와 잉크 천에 금속 키를 두드리는 프린트 헤드가있었습니다.

\ r 프린트 헤드를 왼쪽으로 되돌립니다.

\ n 인자 판을 한 줄 전진합니다.

\ n이 발행되지 않은 경우 한 줄에있는 내용을 입력합니다 (주로 텍스트에 밑줄을 긋는 데 사용됨).


질문의 일부에 답하려면

의 용도는 \r무엇입니까?

Many Internet protocols, such as FTP, HTTP and SMTP, are specified in terms of lines delimited by carriage return and newline. So, for example, when sending an email, you might have code such as:

fprintf(socket, "RCPT TO: %s\r\n", recipients);

Or, when a FTP server replies with a permission-denied error:

fprintf(client, "550 Permission denied\r\n");

It is quite useful, when you are running on the unix platform, and need to create a text file which will be opened on the dos platform.

Unix uses '\n' as its line terminator, and dos uses '\r\n' as its line terminator, so you can use it to create a dos text file.

ReferenceURL : https://stackoverflow.com/questions/7372918/whats-the-use-of-r-escape-sequence

반응형