fread fwrite 예제

Skrevs fredagen den 2 augusti, 2019

fread 및 fwrite 함수는 각각 입력 및 출력의 파일 작업을 제공합니다. fread 및 fwrite는 에서 선언됩니다. 일반적으로 w:write(시스템 호출)를 래핑합니다. 첫 번째 예에서는 정수 변수에 4바이트를 저장하는 동안 바이트 시퀀스가 반전됩니다. (즉, 09 A4 35 0E는 0E 35 A4 09로 저장됩니다. fwrite() 함수는 네 개의 인수를 사용합니다. ptr : ptr은 메모리에 저장된 배열 또는 구조의 참조입니다. 크기 : 크기는 기록할 총 바이트 수입니다. n : n은 레코드가 기록되는 횟수입니다. FILE* : FILE*은 레코드가 이진 모드로 기록되는 파일입니다. fwrite() 함수는 파일에 레코드(바이트 시퀀스)를 작성하는 데 사용됩니다.

레코드는 배열 또는 구조일 수 있습니다. fread() 함수는 fwrite() 함수의 상호 보완적인 함수입니다. fread() 함수는 일반적으로 이진 데이터를 읽는 데 사용됩니다. fwrite() 함수와 동일한 인수를 허용합니다. fwrite 함수는 스트림에 데이터 블록을 씁니다. 스트림의 현재 위치에 카운트 요소의 배열을 작성합니다. 각 요소에 대해 크기 바이트를 작성합니다. 스트림의 위치 표시기는 성공적으로 작성된 바이트 수에 따라 진행됩니다. 다음 예제에서는 fread() 함수의 사용을 보여 주십니다.

구문: size_t fread(보이드 *ptr, size_t 크기, size_t n, FILE*fp); . . 이렇게 하면 파일에서 float 값을 읽고 변수 val에 저장합니다. 우리가 컴파일하고 파일 file.txt을 만들고이 자습서입니다 내용을 작성하는 위의 프로그램을 실행하자. 그 후, 우리는 fseek() 함수를 사용하여 파일의 시작 부분에 대한 쓰기 포인터를 재설정하고 다음과 같은 파일 콘텐츠를 준비 – 스트림 – 이것은 입력 스트림을 지정하는 FILE 개체에 대한 포인터입니다. size – 이것은 읽을 수있는 각 요소의 바이트 크기입니다. . ptr – 이것은 크기 * nmemb 바이트의 최소 크기와 메모리 블록에 대한 포인터입니다. 4-10 호에서는 구조 직원이 변수 emp와 함께 선언됩니다. 구조 직원은 이름, 지정, 연령 및 급여의 네 가지 구성원이 있습니다.

. 성공적으로 읽은 요소의 총 수는 통합 데이터 형식인 size_t 개체로 반환됩니다. 이 숫자가 nmemb 매개 변수와 다른 경우 오류가 발생했거나 파일 끝에 도달했습니다. 예 3: 배열의 처음 5개 요소를 읽는 25-31줄에서 while 루프는 fread()와 함께 사용하여 파일의 내용을 읽습니다. fread() 함수는 파일에 저장된 레코드를 하나씩 읽고 구조 변수 emp에 저장합니다. fread() 함수는 파일에 레코드가 있을 때까지 1을 계속 반환합니다. 파일의 끝이 발생하면 fread())가 발생하면 1 미만의 값이 반환되고 while 루프의 조건이 false가되고 컨트롤이 while 루프에서 나옵니다. nmemb – 이것은 크기 바이트의 크기와 요소, 각각의 수입니다.

다음 프로그램은 sample.txt라는 파일을 열고 파일에 문자 배열을 쓰고 닫습니다. ptr은 파일을 읽은 후 데이터가 저장되는 메모리 블록의 시작 주소입니다. 함수는 각 항목이 두 번째 인수에 지정된 바이트 수를 차지하는 파일에서 n 항목을 읽습니다. 성공하면 파일에서 n 항목을 읽고 n을 반환합니다. 파일의 오류 또는 끝에 는 n 보다 작은 숫자를 반환 합니다. C 라이브러리 함수 size_t fread(보이드 *ptr, size_t 크기, size_t nmemb, FILE *stream)는 주어진 스트림의 데이터를 ptr에 의해 가리키는 배열로 읽습니다. 이렇게 하면 파일에서 유형 구조체 학생의 처음 10개 요소를 읽고 변수 arr_student에 저장합니다. 함수는 성공적으로 작성된 요소 수를 반환합니다.

Teater Kapija
Örmölla 321
SE-274 56 Abbekås

+46 (0)411 533 772
+46 (0)70 740 17 61

info@kapija.com
www.kapija.com