줄바꿈 종류 (LF, CR)
C,C++ 에서 문자열을 처리할 때 줄바꿈을 해야 하는 경우가 있다.
이때 쓰이는것이 라인피드(LF : Line Feed) 와 캐리지리턴(CR: Carriage return) 두 가지가 존재하는데
각각의 정의와 사용법에 대해서 알아보겠다.
두 종류의 차이와 설명 |
라인피드(LF : Line Feed) => 현재 위치에서 바로 아래로 이동
캐리지리턴(CR: Carriage return) => 커서의 위치를 앞으로 이동
[각 사용법]
printf("Line Feed \n"); printf("Carriage Retrun \r"); |
위와 같이 라인피트는 \n을 사용하며 캐리지 리턴은 \r을 사용한다.
아래 예제를 보면서 이해를 돕도록 하겠다.
[ Carriage Return 예제 ]
... int main(void) { printf("test\r"); printf("1004"); } |
실행 결과 1004 |
[ Line Feed 예제 ]
... int main(void) { printf("test\n"); printf("1004"); } |
실행 결과 test 1004 |
운영체제 마다 줄바꿈 정의 |
운영체제 마다 줄바꿈 정의가 다르다.
각 운영체제 마다 정의를 살펴 보자.
윈도우/DOS : CRLF 조합으로 줄바꿈을 정의 Unix/Linux/C : LF 만으로 줄바꿈을 정의 |
이래서 윈도우에서 작성 된 것을 Unix/Linux 계열로 올리면 vi로 편집했을 때 ^M이 붙는 것을 확인 할 수 있다.
물론 ftp로 올릴 때 방식이 텍스트/2진 어떤 것을 선택하느냐에 따라 달라질 수 있다.
텍스트 방식으로 올리면 데이터 변환이 생겨 /r/n -> /n 으로 된다.
2진 모드로 올릴때는 변환이 생기지 않아 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수가 있다.
[sftp 전송 방식] 텍스트 방식 : 줄바꿈에 대한 변환이 일어남 2진 모드 : 줄바굼에 대한 변환이 일어나지 않음 ( 문제가 발생할 수 있다. ) |
'프로그램 > C' 카테고리의 다른 글
[C] 문자열 단위 입출력 함수 gets(), puts() (0) | 2017.10.01 |
---|---|
[C] 문자 입출력 함수 getchar(), putchar() (0) | 2017.09.29 |
[C] 구조체 배열과 포인터 (0) | 2017.07.31 |
[C] 구조체 (0) | 2017.07.24 |
[C] 포인터와 상수(const) (0) | 2017.07.23 |