7-2

BakJeonghyun·2022년 10월 12일
0

임의 접근 을 이용한 학생 레코드 저장

에러 시
코드: 사용법을 적어주면 좋다.

대량의 데이터를 다루려면 커멘드 라인을 쓸 수 밖에 없다.
shell 명령어 사용

에러 메시지 출력
시스템 콜의 실패에는 다 이유가 있다 - perror 매우 유용.(system call에만 해당, 실패한 직후에 불러야 함-시스템콜 실패할 때마다 perror 써줘야해. )- 궁금하면 실패하게 만들어봐.
scanf- 입력 순서를 학번 순서로 하지 않아도 돼. 파일 기록 될 때 순서대로 입력하도록 되어있음. 

-> 데이터 베이스 였음/ 입력이 없을 때 ctrl + D

검색하는 코드
임의 적근을 이용한 학생 레코드 검색:

검색할 학생의 학번 입력
검색해야 할 학생의 위치로 이동
스트럭처 읽고 레코드 단위로(하나의 레코드)읽는다.
" (record.id != 0)이건 왜 할까? 빈공간인지 아닌지 확인해야해서." 빈공간이면 레코드 없다고 출력함.
없는 학번 공간도 버퍼로 할당해야해. 
파일로부터 못읽었으니 0으로 clear.

루프를 돌기 위한 코드 prinf("계속 돌겠습니까?(Y/N")scanf("%s", &c);
while(c=="Y" || c=="y"); //do while 문

레코드 수정 과정
업데이트 read - modify - write rw 다 있어야 함.
쓰는 것과 업데이트는 좀 다름. 쓰는 건 only w.
파일 위치은 읽거나 쓰기만 해도 바뀐다. 읽으면 여기까지 앍었다고 위치 포인터가 이동해. 그래서 읽고 나서 같은 자리에 쓰려면 이동한 위치를 다시 제자리로 돌려놔야 해.

임의 접근을 이용한 학생 레코드 수정

back하는 코드 - lseek(fd, (long) sizeof(record), SEEK_CUR);
에러 체크 안하고 있는데 꼭 해야 해. 생략한거야
*if문은 모두 {}를 넣는게 좋다. 나중에 코드 추가 할 수 있으니까

버퍼만 알아도 ...파일 관련이 제일 이해하기 쉽다.

5장 까지 시험범위

코드들을 반드시 직접 작성해보고 실행해봐. 일부러 에러가 나도록 바꿔보고. 디버깅을 잘하려면 디버깅을 많이 해보는 수밖에 없다. 에러를 많이 봤다. 디버깅을 잘하려면 에러를 일부로 많이 내봐. 세미콜론 없애보고 리턴 값 안써보고 나오는 에러 메시지를 읽어 보고, 집합 표시가 오른쪽이 없으면 어떤 에러 메시지가 나오고, 왼쪽이 없으면 어떤 에러 메시지가 나오는지. 왜냐면 이로 인해 생기는 문제를 말하기 때문.

profile
I just got started a blog.

0개의 댓글