모두의 코드
모두의 코드

총 42 개의 강의로 준비된 씹어먹는 C 언어 강좌를 통해 C 언어의 처음부터 끝까지 배우실 수 있습니다! 특히 악명 높은 C 언어의 포인터나, 어려운 개념들을 충실히 짚고 넘어갑니다.

이 강좌는 2010년에 완결되었지만, 지속적으로 개선 및 보완하고 있습니다.

C 언어 문법을 아시는 분들이라면, 씹어먹는 C++ 강좌를 통해 C++ 기초 부터 최근의 C++ 17 까지 모든 내용을 배우실 수 있습니다. C 언어와 C++ 의 기본적인 문법이 비슷하기 때문에, C 언어를 어느 정도 아는 독자를 가정하여 쓰여져 있습니다.

이 강좌는 2020년에 완결되었고 총 50 개의 강좌가 준비되어 있습니다.

사이트 내에서 검색 하기
C 언어 레퍼런스
표준 입출력 라이브러리 stdio.h
문자열 관련 라이브러리 string.h
시간 관련 라이브러리 time.h
C ++ 레퍼런스
문자열 라이브러리 string
알고리즘 라이브러리 algorithm
최근 댓글
//문제 5 #include<stdio.h> void addf(char(* name)[100], char(* author)[100], char(* publisher)[100],int book_count); int search(char(*name)[100], char(*author)[100], char(*publisher)[100], int book_count,int i); void borrow(char(*name)[100],int *borrowed,int book_count); void turn_in(char(*name)[100], int* borrowed, int book_count); int compare(char* a, char* b); int main() { char name[100][100]; char author[100][100]; char publisher[100][100]; int n; int book_count = 0; int borrowed[100]= {0}; for (;;) { printf("원하는 기능을 입력: 1.책 추가, 2.검색, 3.책 대출, 4.책 반납, 5.종료"); scanf("%d", &n); switch (n) { case 1: if (book_count >= 100) { printf("더 이상 추가할 수 없습니다."); break; } else { addf(name, author, publisher, book_count); book_count++; break; } case 2: int i; printf("기능 선택: 1.제목, 2.저자, 3.출판사 검색"); scanf("%d", &i); search(name, author, publisher, book_count, i); break; case 3: borrow(name, borrowed, book_count); break; case 4: turn_in(name, borrowed, book_count); break; case 5: return 0; default: printf("1~5중의 숫자를 입력하세요\n"); break; } } return 0; } void addf(char(*name)[100], char(*author)[100], char(*publisher)[100],int book_count) { printf("책의 제목, 저자, 출판사 입력: "); scanf("%s", name[book_count]); scanf("%s", author[book_count]); scanf("%s", publisher[book_count]); } int search(char(*name)[100], char(*author)[100], char(*publisher)[100], int book_count, int i) { int found = 0; switch (i) { case 1: char title_search[100]; printf("제목 입력: "); scanf("%s", title_search); for (int n = 0; n < book_count; n++) { if (compare(name[n],title_search)) { printf("저자: %s, 출판사:%s\n", author[n], publisher[n]); found += 1; } } break; case 2: char author_search[100]; printf("저자 입력: "); scanf("%s", author_search); for (int n = 0; n < book_count; n++) { if (compare(author[n], author_search)) { printf("제목: %s, 출판사:%s\n", name[n], publisher[n]); found += 1; } } break; case 3: char publisher_search[100]; printf("출판사 입력: "); scanf("%s", publisher_search); for (int n = 0; n < book_count; n++) { if (compare(publisher[n], publisher_search)) { printf("제목: %s, 저자:%s\n", name[n], author[n]); found += 1; } } break; default: break; } if (!found) { printf("검색결과없음\n"); } return 0; } int compare(char* a, char* b) { int i = 0; while (a[i] != '\0' && b[i] != '\0') { if (a[i] != b[i]) return 0; i++; } if (a[i] == '\0' && b[i] == '\0') return 1; return 0; } void borrow(char(*name)[100], int* borrowed, int book_count) { int found = 0; char borrow_search[100]; printf("제목 입력: "); scanf("%s", borrow_search); for (int n = 0; n < book_count; n++) { if (compare(name[n], borrow_search)) { if (borrowed[n] == 0) { printf("대출 완료\n"); borrowed[n] = 1; found += 1; } else printf("이미 대출된 상태\n"); } } if (!found) { printf("검색결과없음\n"); } } void turn_in(char(*name)[100], int* borrowed, int book_count) { int found = 0; char turn_in_search[100]; printf("제목 입력: "); scanf("%s", turn_in_search); for (int n = 0; n < book_count; n++) { if (compare(name[n], turn_in_search)) { if (borrowed[n] == 1) { printf("반납 완료\n"); borrowed[n] = 0; found += 1; } else printf("이미 반납된 상태\n"); } } if (!found) { printf("검색결과없음\n"); } }
111 02.15