C 언어에는 파일을 읽을 수 있는 여러 함수가 있으며, 가장 일반적으로 사용되는 함수는 read() 및 fread() 함수입니다. 이 언어는 getchar()와 같은 함수를 사용하여 문자별로 문자를 읽는 방법도 제공합니다.
파일 처리 기능, 호출 방법, 입력 및 출력 인수 등을 능숙하게 사용하려면 프로그래머가 시스템에 저장된 정보를 저장하고 폐기하는 데 사용할 수 있는 리소스이기 때문에 이를 아는 것이 중요합니다.
이 Linuxhint 기사에서는 read() 함수를 사용하여 파일을 읽는 방법을 배웁니다.
이 ella에 대한 모든 것, 구문, 메소드 호출, 입력 및 출력 인수, 각각 허용되는 데이터 유형, 올바르게 선언하는 방법에 대해 설명하겠습니다.
그런 다음 이 기능을 실제 사례에 적용하여 배운 내용을 적용해 보겠습니다.
read() 함수 사용 방법을 완전히 이해할 수 있도록 이 함수를 사용할 때 발생할 수 있는 모든 오류와 오류 감지 및 식별을 설명하는 특별 섹션을 추가하여 오류 발생 시 빠른 해결에 필요한 기술을 제공합니다.
C 언어의 Read() 함수 구문
size_t read(int fd, void *buf, size_t count);
Read() 함수 설명
read() 함수는 "fd" 입력 인수의 설명자에 의해 지정된 열린 파일의 내용을 읽습니다. 이 함수는 파일의 내용을 읽고 바이트 수와 함께 "buf"가 가리키는 버퍼에 복사합니다. "fd" 식별자는 파일이 열릴 때 open() 함수의 결과로 반환되는 정수입니다.
read() 함수가 성공적으로 반환되면 읽은 바이트 수를 반환합니다. 결과가 0이면 파일을 끝까지 읽었음을 의미하고, -1은 오류가 발생했음을 의미합니다.
특정 오류는 전역 "errno" 변수에서 해당 코드를 검색하여 식별할 수 있습니다. 나중에 read() 함수를 사용할 때 발생할 수 있는 오류와 이를 감지하고 식별하는 기술을 설명하는 섹션을 찾을 수 있습니다.
read() 함수는 "unistd.h" 헤더에 선언되어 있습니다. 이를 사용하려면 다음과 같이 코드에 이 파일을 포함해야 합니다:
Read() 함수를 사용하여 파일을 읽는 방법
이번 예제에서는 open(), read() 함수를 사용하여 파일을 열고 읽는 방법을 설명하겠습니다.
이를 위해 이전에 Linux Manager를 통해 "example.txt"라는 이름의 텍스트 파일을 생성하여 "Documents" 디렉터리에 저장했습니다. 그리고 그 안에 이 글의 첫 문단을 썼습니다.
파일을 읽는 코드를 개발하는 첫 번째 단계는 필요한 헤더를 포함하고 빈 값을 반환하는 main() 함수를 만드는 것입니다. 파일 디스크립터 역할을 하는 "fd" 정수를 정의합니다. read()가 읽은 정보가 저장되는 "buff"라는 1024자 버퍼입니다. 배열 경로에는 읽으려는 파일의 경로와 이름이 저장됩니다.
필요한 변수를 정의한 후 open() 함수를 호출하여 파일을 엽니다. 파일의 경로와 이름이 포함된 경로 배열을 첫 번째 입력 인수로 전달하고 O_RDONLY 플래그를 두 번째 인수로 지정하여 이 함수를 호출합니다. 출력 인수로 "fd" 정수를 전달합니다. 여기서 open()은 파일을 읽는 데 사용하는 설명자를 반환합니다.
파일이 열리면 read() 함수를 호출하고 "fd" 설명자를 open() 함수가 반환하는 첫 번째 인수로 전달하여 내용을 읽습니다. 두 번째 인수로 읽을 내용을 저장하는 "버프" 버퍼에 포인터를 전달하고 마지막으로 버퍼 크기(이 경우 1024바이트)를 전달합니다.
그런 다음 printf() 함수를 사용하여 buff에 저장된 내용을 명령 콘솔에 표시합니다. 이 예제의 전체 코드는 다음과 같습니다.
#include
#include
#include
#include
정수 메인()
{
int fd;
숯 버프[1024];
char 경로[] ="문서/example.txt";
fd =open(경로, O_RDONLY);
읽기(fd, 버프, 1024);
printf("\n\n%s\n\n",buff);
}
다음 그림에서는 이 코드의 컴파일 및 실행을 보여줍니다. 보시다시피, read()는 "example.txt" 파일의 전체 내용을 "buff"에 넣고 printf() 함수는 이를 명령 콘솔에 인쇄합니다.

Read() 함수 사용 시 발생할 수 있는 오류를 감지하고 식별하는 방법
read()를 사용하면 다양한 오류가 발생할 수 있습니다. 이런 일이 발생하면 이 함수는 -1과 같은 결과를 반환합니다.
오류가 발생했는지 확인하는 가장 쉬운 방법은 조건이 반환 값 -1인 "if" 조건을 사용하는 것입니다. 이제 이 방법을 사용하여 오류가 발생했는지 확인하는 방법을 살펴보겠습니다.
int n;
n =읽기(fd, buff, 1024);
if (n ==-1){
printf("파일을 읽는 중 오류가 발생했습니다.");
}
read() 함수가 오류와 함께 반환되면 "if" 문으로 전환되고 "파일을 읽는 동안 오류가 발생했습니다."라는 메시지가 인쇄됩니다.
오류가 발생하면 "errno.h" 헤더에 정의된 전역 "errno" 변수에 숫자 코드가 자동으로 저장됩니다. 이 코드는 발생한 오류를 식별하는 데 사용될 수 있습니다.
다음은 read() 함수가 생성할 수 있고 "errno.h" 헤더에 정의된 오류와 함께 각 오류 및 관련 정수 값에 대한 간략한 설명을 발췌한 것입니다.
오류 번호의 정의값 오류EAGAIN 11다시 시도하세요EBADF 9잘못된 파일 번호EDESTADDRREQ 89대상 주소 필수EFAULT 14잘못된 주소EFBIG 27파일이 너무 큼EINTR 4시스템 호출이 중단되었습니다EINVAL 22잘못된 인수EIO 5 I/O 오류EPERM 1작업이 허용되지 않습니다오류를 식별하는 가장 쉬운 방법은 "errno" 변수가 점프 조건이고 각 사례가 오류 정의인 스위치를 여는 것입니다.
다음으로, 음수 부호가 있는 설명자를 입력하려고 하여 오류가 발생하는 예를 살펴보겠습니다. 오류를 식별하기 위해 이전 코드 조각에서 본 'if' 조건을 사용합니다. 이를 식별하기 위해 이 함수에서 발생할 수 있는 가장 일반적인 세 가지 오류가 포함된 스위치를 엽니다.
#include
#include
#include
#include
#include
정수 메인()
{
int fd,n;
숯 버프[1024];
char 경로[] ="문서/example.txt";
fd =open(경로, O_RDONLY);
n =읽기(99999999, 버프, 1024);
if (n ==-1){
스위치(errno){
사례 EBADF:{
printf("잘못된 파일 번호입니다. 오류:%i\n", errno);
휴식;}
케이스 EINVAL:{
printf("잘못된 인수입니다. 오류:%i\n", errno);
휴식;}
케이스 EIO:{
printf("I/O 오류 . 오류:%i\n", errno);
휴식;}
}
}
}
다음 그림에서 볼 수 있듯이 read() 함수는 유효하지 않은 디스크립터가 입력 인수로 전달되면 오류를 반환하며, 점프 조건으로 사용되는 “errno” 변수에서 가져온 값을 통해 EBADF 케이스 입력 시 오류를 식별할 수 있습니다.

결론
이번 Linuxhint 기사에서는 파일을 읽기 위해 C 언어로 구현되는 가장 일반적인 함수 중 하나인 read() 함수를 사용하는 방법을 보여주었습니다.
우리는 그 구문과 이론적 연산, 입력 및 출력 인수, 데이터 유형을 설명하는 섹션을 살펴보았습니다. 이후 실제 예제에서 배운 내용을 open() 및 read() 함수를 사용하여 파일을 열고 읽는 방법을 보여주는 코드와 이미지로 구현했습니다.
이 기능을 사용할 때 발생할 수 있는 오류를 해결하는 데 필요한 수단을 확보하기 위해 C 언어가 오류를 감지하고 식별하기 위해 제공하는 방법을 설명하는 특별 섹션을 추가했습니다.