fsetpos
|
헤더 파일에 정의됨
<stdio.h>
|
||
파일 스트림 stream 의 파일 위치 지시자와 멀티바이트 파싱 상태(있는 경우)를 pos 가 가리키는 값에 따라 설정합니다.
새로운 파싱 상태와 위치를 설정하는 것 외에, 이 함수를 호출하면 ungetc 의 효과를 취소하고, 설정되어 있는 경우 파일 끝(end-of-file) 상태를 지웁니다.
읽기 또는 쓰기 오류가 발생하면 스트림의 오류 표시기( ferror )가 설정됩니다.
목차 |
매개변수
| stream | - | 수정할 파일 스트림 |
| pos | - | 파일 위치 지시자의 새 값으로 사용할 fpos_t 객체에 대한 포인터 |
반환값
0 성공 시 0, 그렇지 않으면 0이 아닌 값.
참고 사항
넓은 스트림에서 끝이 아닌 위치로 탐색한 후, 다음 출력 함수 호출은 파일의 나머지 부분을 정의되지 않은 상태로 만들 수 있습니다. 예를 들어, 다른 길이의 멀티바이트 시퀀스를 출력함으로써 발생할 수 있습니다.
예제
fsetpos
오류 검사와 함께
#include <stdio.h> #include <stdlib.h> int main(void) { // FP(부동 소수점) 값 배열 준비 #define SIZE 5 double A[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; // 배열을 파일에 기록 FILE * fp = fopen("test.bin", "wb"); fwrite(A,sizeof(double),SIZE,fp); fclose (fp); // FP 값을 배열 B로 읽어오기 double B[SIZE]; fp = fopen("test.bin","rb"); fpos_t pos; if (fgetpos(fp, &pos)) // 현재 위치: 파일 시작점 { perror("fgetpos()"); fprintf(stderr, "fgetpos() failed in file %s at line # %d\n", __FILE__, __LINE__ - 3); exit(EXIT_FAILURE); } int ret_code = fread(B,sizeof(double),1,fp); // 하나의 FP 값 읽기 // 현재 위치: 하나의 부동 소수점 값 읽은 후 printf("%.1f; read count = %d\n", B[0], ret_code); // 하나의 FP 값과 ret_code 출력 if (fsetpos(fp, &pos)) // 현재 위치를 파일 시작점으로 재설정 { if (ferror(fp)) { perror("fsetpos()"); fprintf(stderr, "fsetpos() failed in file %s at line # %d\n", __FILE__, __LINE__ - 5); exit(EXIT_FAILURE); } } ret_code = fread(B, sizeof(double), 1, fp); // 첫 번째 FP 값 재읽기 printf("%.1f; read count = %d\n", B[0], ret_code); // 하나의 FP 값과 ret_code 출력 fclose(fp); return EXIT_SUCCESS; }
가능한 출력:
1.0; read count = 1 1.0; read count = 1
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.21.9.3 fsetpos 함수 (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.21.9.3 fsetpos 함수 (p: TBD)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.21.9.3 fsetpos 함수 (p: 337)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.19.9.3 fsetpos 함수 (p: 303)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.9.9.3 fsetpos 함수
참고 항목
|
파일 위치 표시자를 얻음
(함수) |
|
|
현재 파일 위치 표시자를 반환
(함수) |
|
|
파일 위치 표시자를 파일의 특정 위치로 이동
(함수) |
|
|
C++ documentation
for
fsetpos
|
|