[자료구조 - C언어] 자료구조 제14강: Music Library Program(6)
2022. 11. 4. 00:19ㆍCS/자료구조
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
0. 실행 예
- Data file name? - 프로그램을 실행하면 어떤 데이터 파일을 load 할지 물어본다.
- 입력 없이 Enter를 치면 데이터 파일로부터 데이터를 읽지 않고 프로그램을 실행
status - 저장된 모든 노래의 번호, 가수, 제목, 파일의 경로명을 출력- 노래의 번호는 입력 순서대로 번호 할당
- 출력 시 가수 이름 알파벳 순으로 출력
- 동일한 가수 이름이면 노래 제목으로 알파벳 순으로 출력
add - 가수 이름, 제목, 파일명으로 추가- 파일명은 지정하지 않아도 된다.
- search - 가수 이름과 노래 제목으로 검색
- 제목 없이 가수 이름만 검색해도 된다.
- play 4 - 4번 노래를 play
- remove 6 - 6번 노래를 목록에서 삭제
- save as my_collection.txt - 목록을 파일에 저장
- exit - 종료
- 파일 형식
가수#노래제목#경로# LESSERAFIM#Sour Grapes# #
- 가수#노래제목#경로# 순서
- #문자를 필드 간의 구분자
- 존재하지 않는 항목의 경우 하나의 공백 문자로 표시
- 모든 라인은 반드시 구분자로 끝난다.
1. 데이터 파일 로드하기
1-1. main에서 로드 처리를 하는 함수 생성 - void hanlde_load()
//main.c
int main(){
initialize();
handle_load();
process_command();
}
void handle_load(){
char buffer[BUFFER_LENGTH];
printf("Data file name ? ");
//data 파일을 로드하지 않겠다
if(read_line(stdin, buffer, BUFFER_LENGTH) <=0)
return;
FILE *fp = fopen(buffer, "r");
//사용자가 입력한 파일이 존재하지 않는다면
if (fp==NULL){
printf("No such file exists. \\n");
return;
}
load(fp);
fclose(fp);
}
- xcode에서 실행시 파일명 대신 파일 주소 전체를 입력해야 함
//파일이 저장될 주소 + 입력된 파일 명 char filePath[BUFFER_LENGTH] = "/USers/~/"; char *file = NULL; file = strcat(filePath, buffer); FILE *fp = fopen(filePath, "r");
1-2. void load(FILE *Fp)
//library.c
#include "string_tools.h"
void load(FILE *fp){
char buffer[BUFFER_LENGTH]; //한 라인의 데이터를 읽어올 데이터 배열
char *name, *title, *path;
while(1){ //무한 루프
//끝에 도달 - 종료
if(read_line(fp, buffer, BUFFER_LENGTH) <=0)
break;
name = strtok(buffer, "#");
if(strcmp(name, " ")==0)
name = NULL;
else
name = strdup(name);
title = strtok(NULL, "#");
if(strcmp(title, " ")==0)
title = NULL;
else
title = strdup(title);
path = strtok(NULL, "#");
if(strcmp(path, " ")==0)
path = NULL;
else
path = strdup(path);
printf("%s %s %s\\n", name, title, path);
}
}
1-3. library.h 프로토 타입
//library.h
void load(FILE *fp);
2. 결과
부경대학교 권오흠 교수님의 [c로 배우는 자료구조 및 여러 가지 예제 실습] 강의 정리입니다. 감사합니다.
https://www.youtube.com/watch?v=fglT1AqmFfk&feature=emb_title
728x90
'CS > 자료구조' 카테고리의 다른 글
[자료구조 - C언어] 자료구조 제14강: Music Library Program(8) (0) | 2022.11.04 |
---|---|
[자료구조 - C언어] 자료구조 제14강: Music Library Program(7) (0) | 2022.11.04 |
[자료구조 - C언어] 자료구조 제14강: Music Library Program(5) (0) | 2022.10.29 |
[자료구조 - C언어] 자료구조 제14강: Music Library Program(4) (0) | 2022.10.28 |
[자료구조 - C언어] 자료구조 제14강: Music Library Program(3) (0) | 2022.10.27 |