반응형

CR : Carriage Return\r에 해당하고 LF : Line Feed \n에 해당한다. 그리고 CRLF는 둘 다 쓰겠다는 의미이다.
이 두개가 사용되는 이유는 줄바꿈 때문인데, 옛날에 타자기를 사용할 때도 썼던 방식이라고 한다.

 

LF는

LF 즉, Line Feed는 여러 개발자들이 자주 본 이스케이프 문자이기 때문에 잘 알고 있을거라고 생각한다. 이것은 커서를 아래줄로 내린다는 의미이다. 자주 쓰는 엔터라고 생각하면 쉽겠다.

 

CF는 

CR ,Carriage Return은 \r인데 많이 생소할 것이다 나도 이번에 처음 알았다. 이 녀석의 할 일은 커서를 맨 앞으로 보낸다는 의미이다. 키보드의 Home키라고 생각하면 쉽겠다.

 

그런데 여기서 이 두개를 같이 쓰는 CRLF는 \r과 \n이 합쳐져있는것이다. 커서를 맨 앞으로 보내고, 커서를 아랫줄로 보낸다 라고 생각하면 되겠다. 

 

타자기부터 사용되어온 이 방식을 컴퓨터가 줄바꿈을 할 때도 사용하게 되었는데, 컴퓨터는 성능을 최우선으로 생각하니 줄바꿈을 할 때도 둘 중에 \n만 써도 줄바꿈이 되는데 굳이 4바이트(\r\n)를 사용해서 줄바꿈을 할 필요가 없는 것이다. 

 

그러나 윈도우는 기본 포맷으로 CRLF를 사용하여 줄바꿈을 하고 있고,

유닉스, 리눅스는 LF방식으로 줄바꿈을 하고 있다.

 

그렇기 때문에 크롤링을 한다거나, 파일을 읽어오는 프로그램을 만든다거나 할 때, 신경을 써주어야겠다. 필자는 리눅스 환경에서 파일을 읽어오는데 이것 때문에 3시간을 잡아 먹혔다.

 

물론 기본 포맷이라는거지 리눅스에서 CRLFCR을 못 쓴다는 것은 아니다 파일 형식 변경을 지원하는 에디터로 변경해주면된다.

CLion의 형식 바꾸는 팝업이다.

 

아래는 간단한 예제이다.

#include <stdio.h>

int main(){
    printf("abcd\refgh");
    printf("abcd\nefgh");

    return 0;
}
efghabcd
efgh

 

반응형