도서관리프로그램 삭제부분 코드좀 짜주실분
덕이
질문 제목 : 삭제부분 코드좀 짜주세요 ㅠ질문 내용 :제 머리로는 도저히 짤수가 없네요..
아는분이 배열에 책 목록을 불러와서 삭제할부분만 삭제하고 이제 그 배열을 다시 쓰라는데 어떻게 해야할지 모르겠네요#include stdio.h
#include stdlib.h
#include windows.h
#include string.htypedef struct book
{
char title[100]; //책제목
char writer[100]; //저자명
char company[100]; //출판사
char num[100]; //일련번호
}book;
int main(void)
{
book book[100];
int menu;
int count=0;
int a=0;
int i=0; while(1) //무한반복
{
system(cls);
printf(=================================\n);
printf(= 도서 관리 프로그램 =\n);
printf(=================================\n\n);
printf(1.도서 추가\n);
printf(2.도서 삭제\n);
printf(3.도서 검색\n);
printf(4.도서 목록\n);
printf(5.프로그램 종료\n);
printf(=================================\n\n);
printf(=숫자만 입력해 주십시요!= \n\n);
printf(=원하는 메뉴번호를 입력하세요 : );
scanf(%d,&menu);
printf(\n);
if(menu==1)
{
file * file=fopen(data.txt,a+); //file *는 고수준파일입출력시 사용하는 구조체 주소를 보관.?
fflush(stdin); //버퍼에 남아 있는 데이터를 지워준다.
system(cls); // 화면 클린
printf(=================================\n);
printf( 도서 추가 항목\n);
printf(=================================\n\n);
printf(도서 제목 : );
scanf(%sbook[count].title); //gets 입력함수는 스페이스와 탭을 인식
fflush(stdin);
printf(저자명 : );
scanf(%sbook[count].writer);
fflush(stdin);
printf(출판사 : );
scanf(%sbook[count].company);
fflush(stdin);
printf(일련번호 : );
scanf(%s,book[count].num);
fflush(stdin);
printf(\n);
fprintf(file, %s\n, book[count].title);
fprintf(file, %s\n,book[count].writer);
fprintf(file, %s\n,book[count].company);
fprintf(file, %s\n\n,book[count].num);
count++;
fflush(stdin);
fclose(file);
continue;
}
else if (menu==2) //삭제
{
char del[100];
char d[100];
int bye;
file * file =fopen(data.txt, r+);
fflush(stdin);
system(cls);
printf(=================================\n);
printf(삭제할 책제목을 검색하세요: );
scanf(%s,del);
while(1)
{
fflush(stdin);
fscanf(file, %s %s %s %s \n,book[i].title,book[i].writer,book[i].company,book[i].num);
if(strcmp(book[i].title,del)==0)
{
printf(\n);
printf(도서 제목 : %s \n,book[i].title);
printf(작가 : %s \n,book[i].writer);
printf(출판사 : %s \n,book[i].company);
printf(일련번호 : %s \n,book[i].num);
i++;
sleep(1000);
fflush(stdin);
printf(===================================\n);
printf(1은 삭제, 2는 취소\n);
printf(이 책을 삭제하시겠습니까? : );
scanf(%d,&bye);
if(bye==1)
{
printf(삭제되었습니다.\n);
sleep(1000);
}
else if(bye==2)
{
printf(취소되었습니다.\n);
sleep(1000);
}
else
{
printf(잘못된 입력입니다.);
sleep(1000);
continue;
}
break;
}
else if(feof(file))
{
printf(존재하지 않는 책입니다.\n);
sleep(1000);
break;
}
}
fclose(file);
}
else if (menu==3) //검색
{
char find[100];
file * file = fopen(data.txt, r);
fflush(stdin);
system(cls);
printf(=================================\n);
printf(검색하려는 책 제목 : );
scanf(%s, find);
printf(\n); while(1)
{
fflush(stdin);
fscans(file, %s %s %s %s \n,book[i].title,book[i].writer,book[i].company,book[i].num);
if(strcmp(book[i].title,find)==0)
{
printf(도서 제목 : %s \n,book[i].title);
printf(작가 : %s \n,book[i].writer);
printf(출판사 : %s \n,book[i].company);
printf(일련번호 : %s \n,book[i].num);
i++;
sleep(1000);
break;
}
else if(feof(file))
{
printf(존재하지 않는 책입니다.\n);
sleep(1000);
break;
}
}
fclose(file);
}
else if (menu==4) //목록
{
file * file =fopen(data.txt, r+);
system(cls);
printf(=================================\n);
printf( 도서목록 \n);
printf(=================================\n\n);
if(file==null)
{
printf(도서 목록이 존재하지 않습니다.);
sleep(1000); //1초동안 프로그램을 멈춤
continue;
}
else
{ while(1)
{
fflush(stdin);
fscanf(file, %s %s %s %s \n,book[i].title,book[i].writer,book[i].company,book[i].num);
printf(도서 제목 : %s \n,book[i].title);
printf(작가 : %s \n,book[i].writer);
printf(출판사 : %s \n,book[i].company);
printf(일련번호 : %s \n,book[i].num);
printf(===========================\n);
fflush(stdin);
i++;
if(feof(file))
break; } }
sleep(3000);
fclose(file);
continue;
}
else if (menu==5) //종료
{
system(cls);
printf(=================================\n);
printf(\n프로그램을 종료하겠습니다.\n\n);
printf(=================================\n);
break; //break로 종료
}
else
{
fflush(stdin);
system(cls);
printf(=================================\n);
printf(올바르지 않은 입력입니다.\n 다시 입력해주십시오.\n);
printf(=================================\n);
sleep(1000); //1초동안 프로그램을 멈춤
} }
}
-
다힘
그걸 할줄모르는 초보자의 슬픔입니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
-
아련나래
파일 입출력 하는군요? ㅎㅎ 지울 요소들 널로 만들고 배열 요소가 널이 아닌 애들만 파일에 출력하게해서 저장하면 안되나요? ㅎㅎㅎ
-
갅지돋는슬아
삭제부분 보시면 이미 사용했고요.. 그 삭제하는방법을 몰라서 질문한건데ㅠㅠ
-
핑크펄
strcmp 함수를 사용해보세요. 문자열을 비교하는 함수인데 루프를 돌면서
저장된 책 제목이랑 지운다고 입력한 책 제목이랑 비교해서 나오면 삭제 하면 될것 같은데요.
화이팅 입니다^^
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |