> For the complete documentation index, see [llms.txt](https://devlee.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devlee.gitbook.io/docs/category/computer-science/r.md).

# 캐리지 리턴 문자('\r')

캐리지 리턴 문자에 대해 공부합니다.

<mark style="color:purple;background-color:green;">**캐리지 리턴 문자('\r')**</mark>는 <mark style="color:purple;background-color:green;">**컴퓨터 시스템에서 줄바꿈을 나타내는 방식**</mark> 중 하나입니다. 주로 운영 체제와 텍스트 파일 포맷에 따라 다르게 사용됩니다. 이 문자에 대해 자세히 이해하기 위해, 캐리지 리턴 문자의 기원과 사용 이유를 살펴보겠습니다.

### 1. **캐리지 리턴의 기원**

캐리지 리턴(Carriage Return, CR)은 타자기에서 유래된 용어입니다. 타자기는 한 줄을 모두 타이핑한 후, 종이를 오른쪽에서 왼쪽으로 이동시키기 위해 "캐리지를 리턴"하는 동작을 수행했습니다. 이 동작이 ASCII 코드에서 `/r`로 정의되었습니다.

### 2. **운영 체제별 줄바꿈 방식**

운영 체제마다 줄바꿈 문자를 처리하는 방식이 다릅니다:

* <mark style="color:purple;">**Windows**</mark>: 줄바꿈을 `\r` (캐리지 리턴 + 라인 피드)로 표시합니다.
* <mark style="color:purple;">**Unix/Linux 및 MacOS (현대)**</mark>: 줄바꿈을  (라인 피드)로 표시합니다.
* <mark style="color:purple;">**MacOS (구버전)**</mark>: 줄바꿈을 `\r`(캐리지 리턴)로 표시했습니다.

이러한 차이 때문에, 다른 운영 체제에서 생성된 텍스트 파일을 읽거나 쓸 때 줄바꿈 문자를 처리하는 방법이 달라질 수 있습니다.

### 3. **캐리지 리턴의 발생 이유**

캐리지 리턴 문자는 주로 다음과 같은 경우에 발생합니다:

* <mark style="color:purple;">**Windows 시스템**</mark>에서 엔터 키를 누르면 입력 스트림에 `\r\n`이 추가됩니다.
* <mark style="color:purple;">**네트워크 프로토콜**</mark>(예: HTTP)에서 줄바꿈을 표준화하기 위해 `\r\n`을 사용합니다.
* <mark style="color:purple;">**레거시 파일 포맷**</mark>에서 줄바꿈을 나타내기 위해 사용되기도 합니다.

### 4. **코드에서 캐리지 리턴 처리**

캐리지 리턴 문자가 있는 입력을 처리할 때, 불필요한 문자로 간주되어 무시됩니다. 예를 들어, Windows 시스템에서 엔터 키를 누르면 `\r`과 `\n`이 연속으로 발생합니다. 이는 다음과 같은 방식으로 처리됩니다:

```java
while (true) {
    int i = System.in.read();
    if (i == '\r') continue;  // 캐리지 리턴 문자는 무시
    if (i == ' ' || i == '\n') {
        break;
    }
    // 나머지 로직...
}
```

이 부분은 `\r`문자를 무시하고, 줄바꿈이나 공백이 나올 때까지 문자를 읽습니다.
