모두의 코드
모두의 코드

총 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
최근 댓글
문제 1 #include <stdio.h> #include <string.h> struct book{ char tt[30]; char ath[30]; char pub[30]; int borrow; }; void register_book(struct book *pbook); void search_book(struct book books[100]); int compare(char str1[30], char str2[30]); void brw(struct book books[100]); int main(){ struct book books[100]; for(int i=0;i<100;i++){ books[i].borrow=0; } int number=0; int menu=0; while(1){ printf("1.책 등록하기\n2.검색\n3.대출 및 반납\n4.종료\n"); scanf("%d",&menu); switch(menu){ case 1: register_book(&books[number]); number++; break; case 2: search_book(books); break; case 3: brw(books); break; case 4: return 0; } } } void register_book(struct book *pbook){ printf("새로운 책을 등록합니다. 제목, 저자, 출판사를 입력해주세요\n"); scanf("%s",pbook->tt); scanf("%s",pbook->ath); scanf("%s",pbook->pub); } void search_book(struct book books[100]){ int manual; struct book *pbook; char search[30]; printf("책 검색\n"); printf("1.제목, 2.저자, 3.출판사"); scanf("%d",&manual); printf("검색어를 입력해주세요\n"); scanf("%s",search); for(int i=0;i<100;i++){ pbook=&books[i]; if(compare(pbook->tt,"")==1) break; switch(manual){ case 1: if(compare(pbook->tt,search)==1) printf("제목:%s저자:%s출판사:%s",pbook->tt,pbook->ath,pbook->pub); break; case 2: if(compare(pbook->ath,search)==1) printf("제목:%s저자:%s출판사:%s",pbook->tt,pbook->ath,pbook->pub); break; case 3: if(compare(pbook->pub,search)==1) printf("제목:%s저자:%s출판사:%s",pbook->tt,pbook->ath,pbook->pub); break; } } } void brw(struct book books[100]){ struct book *pbook; char search[30]; int manual=0; printf("1.대출, 2.반납\n"); scanf("%d",&manual); printf("책 제목을 입력해주세요\n"); scanf("%s",search); for(int i=0;i<100;i++){ pbook=&books[i]; if(manual==1){ if(compare(pbook->tt,search)==1){ if(pbook->borrow==0){ printf("대출이 완료되었습니다.\n"); pbook->borrow=1; } else if(pbook->borrow==1){ printf("이미 대출되었습니다."); } break; } } else if(manual==2){ if(compare(pbook->tt,search)==1){ if(pbook->borrow==1){ printf("반납이 완료되었습니다.\n"); pbook->borrow=0; } else if(pbook->borrow==0){ printf("이미 반납되었습니다."); } break; } } } } int compare(char str1[30],char str2[30]){ char *s1=str1; char *s2=str2; while(*s1 || *s2){ if(*s1!=*s2){ return 0; } else if(*s1==*s2){ s1++; s2++; } } return 1; }
김경주 10.09
문제 5 #include <stdio.h> #include <string.h> void addbk(char book[100][3][30],int *list); void fndtt(char book[100][3][30]); void fndath(char book[100][3][30]); void fndpub(char book[100][3][30]); int brw(char book[100][3][30], int check[100]); int rt(char book[100][3][30], int check[100]); int main(){ char books[100][3][30]; int menu=0; int list=0; int num[100]={0}; while(1){ printf("1. 책 추가\n2.제목 검색\n3.저자 검색\n4.출판사 검색\n5.빌리기\n6.반납하기\n7.종료"); scanf("%d",&menu); switch(menu){ case 1: if(list>=100){ printf("보관 용량 꽉참"); break; } else{ addbk(books,&list); break; } case 2: fndtt(books); break; case 3: fndath(books); break; case 4: fndpub(books); break; case 5: brw(books,num); break; case 6: rt(books, num); break; case 7: return 0; } } } void addbk(char book[100][3][30],int *list){ char bk[3][30]; printf("추가할 책의 제목, 저자, 출판사를 순서대로 입력해주세요.\n"); scanf("%s %s %s",bk[0],bk[1],bk[2]); strcpy(book[*list][0],bk[0]); strcpy(book[*list][1],bk[1]); strcpy(book[*list][2],bk[2]); (*list)++; } void fndtt(char book[100][3][30]){ char search[30]; int i=0; printf("찾을 책의 제목을 입력하세요\n"); scanf("%s",search); while(1){ if(strcmp(book[i][0],search)==0){ printf("%s\n%s\n%s\n",book[i][0],book[i][1],book[i][2]); } i++; if(i>=100){ printf("끝\n"); break; } } } void fndath(char book[100][3][30]){ char search[30]; int i=0; printf("찾을 책의 저자 입력하세요\n"); scanf("%s",search); while(1){ if(strcmp(book[i][1],search)==0){ printf("%s\n%s\n%s\n",book[i][0],book[i][1],book[i][2]); } i++; if(i>=100 || book[i][0]==0){ printf("끝.\n"); break; } } } void fndpub(char book[100][3][30]){ char search[30]; int i=0; printf("찾을 책의 출판사를 입력하세요\n"); scanf("%s",search); while(1){ if(strcmp(book[i][2],search)==0){ printf("%s\n%s\n%s\n",book[i][0],book[i][1],book[i][2]); } i++; if(i>=100){ printf("끝.\n"); break; } } } int brw(char book[100][3][30], int check[100]){ char search[30]; int i=0; printf("빌리고 싶은 책의 제목을 입력하세요\n"); scanf("%s",search); while(1){ if(strcmp(book[i][0],search)==0){ printf("제목:%s\n저자:%s\n출판사:%s\n",book[i][0],book[i][1],book[i][2]); if(check[i]==0){ printf("완료되었습니다."); check[i]=1; break; } else if(check[i]==1){ printf("이미 빌려간 책입니다."); break; } } i++; } } int rt(char book[100][3][30], int check[100]){char search[30]; int i=0; printf("반납하고 싶은 책의 제목을 입력하세요\n"); scanf("%s",search); while(1){ if(strcmp(book[i][0],search)==0){ printf("제목:%s\n저자:%s\n출판사:%s\n",book[i][0],book[i][1],book[i][2]); if(check[i]==1){ printf("완료되었습니다."); check[i]=0; break; } else if(check[i]==0){ printf("이미 반납된 책입니다."); break; } } i++; } }
김경주 10.09