티스토리 뷰
JAVASCRIPT 기반의 스마트앱 개발 2021/프로그래밍 언어활용
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 도서관리 시스템 고도화 (파일 처리)
찬찬잉 2021. 8. 11. 11:02
코드 분석
파일에 저장
void save Books(BOOK * mb, int cnt) { FILE * fp; int i; fp = fopen ("myBooks.txt", "w+"); if (fp == NULL) perror ("Error opening file"); else { fprintf(fp, "%d₩n", cnt); for(i=0; i fprintf(fp, "%s %s %s %d %d₩n", mb[i].bookCode, mb[i].bookTitle, mb[i].bookAuthor, mb[i].bookPrice, mb[i].bookSale); } fclose(fp); } |
파일에서 읽기
BOOK * readBook(BOOK * mb, int *cn) { FILE * fp; int i, cnt; fp = fopen ("myBooks.txt", "r+"); if (fp == NULL) perror ("Error opening file"); else{ fscanf(fp, %d, &cnt); mb = (BOOK *)realloc(mb.size(BOOK) * (cnt+1)); for(i=0; i fprintf(fp, "%s %s %s %d %d", mb[i].bookCode, mb[i].bookTitle, mb[i].bookAuthor, mb[i].bookPrice, mb[i].bookSale); } fclose(fp); } *cn = cnt; return mb; } |
선언 및 main 함수
int main() { int sel, totalBCnt=0; BOOK * myBook; myBook = (BOOK *) calloc(2, sizeof(BOOK)); myBook = readBooks(myBook, &totalBCnt); while(1){ puts("₩n₩n원하는 메뉴를 선택하세요"); switch(sel){ case 1 : myBook = inBook(myBook, &totalBCnt); break; case 2 : outBook(myBook, totalBCnt); break; case 3 : searchBook(myBook, totalBCnt); break; case 0 : saveBook(myBook, totalBCnt); return 0; default : puts("0~3 사이의 메뉴 번호를 선택하세요"); } } return 0; } |
유효성 검사
while(1){ fflush(stdin); printf("책제목 : "); gets(mb[cnt].bookTitle); if(strlen(mb[cnt].bookTitle > 0) break; printf("₩n책제목을 입력하세요"); } while(1){ fflush(stdin); printf("저자 : "); gets(mb[cnt].bookAuthor); if(strlen(mb[cnt].bookAuthor > 0) break; printf("₩n저자를 입력하세요"); } |
<학습정리>
프로그램 설계
- 프로그램 개발 시 작업 목표에 맞게 사용할 라이브러리 함수와 자료구조를 결정해야 함
- 유효성 검사를 위해서 다양한 함수를 적용하게 처리할 수 있다.
- 문자열의 길이는 strlen 함수를 이용하여 빈 입력값을 검사할 수 있다.
코드 분석
- 파일 입출력을 위해서는 먼저 입출력을 위한 스트림을 생성해야한다.
- 파일 스트림 생성 시 fopen 함수를 이용하고 모드를 함수의 인수로 젂달해야한다.
- 형식화된 파일 입출력은 fscanf 와 fprintf 를 이용하여 처리할 수 있다.
'JAVASCRIPT 기반의 스마트앱 개발 2021 > 프로그래밍 언어활용' 카테고리의 다른 글
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 주소록 관리 시스템 (0) | 2021.08.11 |
---|---|
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 시간 관련 라이브러리 (0) | 2021.08.11 |
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 파일 입출력 라이브러리 (응용) (0) | 2021.08.10 |
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 파일 입출력 라이브러리 (기초) (0) | 2021.08.10 |
프로그래밍 언어별 특성_프로그래밍 언어 활용 part 2 : 도서관리 시스템 고도화 (동적메모리) (0) | 2021.08.10 |
댓글
© 2022 chanchaning