write 함수의 개행문자 출력과 표시의 차이와 그 외 응용에 대해 알아보자

리로린·2024년 8월 14일
0

c 언어

목록 보기
4/10

write 함수로 문자와 문자열을 출력하는 것에 대해 좀 더 알아두면 유용한 사항들이 있다. 문자 그대로 출력하는 다양한 예시와 상황을 정리해보자.


1. 문자 리터럴과 이스케이프 시퀀스

  • 문자 리터럴 그대로 출력: 특정 문자를 출력할 때, 해당 문자를 문자열로 감싸서 출력할 수 있다. 예를 들어, 문자 A를 출력하려면:

    #include <unistd.h>
    
    int main() {
        write(1, "A", 1);  // 문자 'A'를 문자열로 출력
        return 0;
    }
  • 이스케이프 시퀀스 문자 그대로 출력: 이스케이프 시퀀스 자체를 문자로 출력하려면 백슬래시(\)와 함께 문자를 문자열로 감싸야 한다. 예를 들어, \n을 문자 그대로 출력하려면:

    #include <unistd.h>
    
    int main() {
        write(1, "\\n", 2);  // '\n'을 문자 그대로 출력
        return 0;
    }

    이 코드는 \n이라는 문자열을 화면에 출력한다.


2. 다른 이스케이프 시퀀스 문자 그대로 출력하기

다른 이스케이프 시퀀스 문자도 같은 방법으로 출력할 수 있다. 예를 들어:

  • 탭 문자 \t를 문자 그대로 출력:

    #include <unistd.h>
    
    int main() {
        write(1, "\\t", 2);  // '\t'을 문자 그대로 출력
        return 0;
    }
  • 백슬래시 문자 \\를 문자 그대로 출력:

    #include <unistd.h>
    
    int main() {
        write(1, "\\\\", 2);  // '\'을 문자 그대로 출력
        return 0;
    }

    \\은 문자열 내에서 백슬래시를 출력하기 위해 두 개의 백슬래시를 사용한다.


3. 다른 특수 문자 출력하기

  • 기타 특수 문자: ASCII 코드 값으로 직접 문자를 출력할 수 있다. 예를 들어, ASCII 코드 값 33인 ! 문자를 출력하려면:

    #include <unistd.h>
    
    int main() {
        char exclamation = 33;  // ASCII 값 33은 '!'
        write(1, &exclamation, 1);  // '!'를 출력
        return 0;
    }

4. 여러 문자를 출력하기

  • 문자 여러 개 출력: 여러 문자를 출력하려면 문자를 포함하는 문자열과 그 길이를 write 함수에 전달하면 된다.

    #include <unistd.h>
    
    int main() {
        char text[] = "Hello, World!";
        write(1, text, sizeof(text) - 1);  // 문자열을 출력, 널 종료 문자 제외
        return 0;
    }

    sizeof(text) - 1을 사용하는 이유는 문자열의 널 종료 문자(\0)를 제외하기 위함이다.


5. 파일 디스크립터와 출력

  • 표준 출력 외의 파일 디스크립터: write 함수는 표준 출력(1) 외에도 다른 파일 디스크립터를 사용할 수 있다. 예를 들어, 파일에 쓰려면 파일을 열고 얻은 파일 디스크립터를 사용한다.

    #include <unistd.h>
    #include <fcntl.h>
    
    int main() {
        int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
        if (fd < 0) {
            return 1;  // 파일 열기에 실패한 경우
        }
        write(fd, "Hello, File!\n", 14);
        close(fd);
        return 0;
    }

결론

  • 문자 그대로 출력: 이스케이프 시퀀스나 특수 문자를 문자 그대로 출력할 때는 백슬래시(\)와 문자를 문자열로 감싸서 출력한다.
  • 여러 문자의 출력: 문자열과 그 길이를 정확히 지정하여 여러 문자를 출력할 수 있다.
  • 파일 디스크립터: 파일 디스크립터를 사용하여 파일에 직접 데이터를 쓸 수 있다.

이러한 방법들을 통해 다양한 형태의 출력을 제어하고 처리할 수 있다.

profile
리로린의 블로그

0개의 댓글