int fseek ( FILE *fp, long int offset, int whence ); 파일 스트림의 파일 position을 설정하는 함수
입력 매개 변수 리스트
fp 파일 스트림
offset whence에서 이동할 상대적 거리
whence SEEK_SET(시작 position), SEEK_CUR(현재 positon), SEEK_END(파일 끝)
반환 값
요청에 맞게 이동하지 못할 때만 0이 아닌 정수
사용 예
//C언어 표준 라이브러리 함수 가이드 //int fseek ( FILE *fp, long int offset, int origin ); 파일 스트림의 파일 position을 설정하는 함수 //회원 데이터를 파일에 출력 //찾고자 하는 순서 번호를 입력받아 회원 정보를 출력 #include <stdio.h> #define MAX_NAME_LEN 20 typedef struct{ char name[MAX_NAME_LEN+1]; int age; }Member; #define MAX_MEMBERS 10 int main (void) { FILE * fp; int n; Member members[MAX_MEMBERS]= { {"홍길동",20},{"강감찬",15},{"을지문덕",22},{"이순신",19},{"김구",30}, {"안중근",30},{"박찬호",35},{"김연아",17},{"아이유",20},{"주니엘",20} }; Member member; fopen_s (&fp,"data.txt","wb");//쓰기 모드로 파일 열기 if (fp==NULL) { perror ("error fopen"); return 0; } //출력 파일 스트림에 회원 정보 출력 if(fwrite(members,sizeof(Member),MAX_MEMBERS,fp) != MAX_MEMBERS) { printf("출력 오류\n"); return 0; } fclose (fp);//출력 파일 스트림 닫기 printf("회원 순서 번호 입력(1~%d) : ",MAX_MEMBERS); scanf_s("%d",&n);//조회할 회원 순서 번호 입력 if((n<1)||(n>MAX_MEMBERS))//순서 번호가 범위를 벗어날 때 { printf("입력 오류\n"); return 0; } fopen_s (&fp,"data.txt","rb");//읽기 모드로 파일 열기 if (fp==NULL) { perror ("error fopen"); return 0; } fseek(fp,sizeof(Member)*(n-1),SEEK_SET);//파일 position 이동 fread(&member,sizeof(Member),1,fp); //회원 데이터 읽기 printf("이름: %s 번호: %d\n",member.name,member.age);//회원 데이터 출력 fclose (fp);//입력 파일 스트림 닫기 return 0; }
출력
회원 순서 번호 입력(1~10) : 10 이름: 주니엘 번호: 20