검색에 쓸 함수구현 질문이요
해길
질문 내용 :
통소스는 좀 길어서 이 글 맨끝에 두었습니다.
int searchf(void)
{
int bknm[20]={0};
int bknm2[20]={0};
int a;
int state;
FILE*booklist= fopen(booklist.txt, rt);
fseek(booklist,0,SEEK_SET);
printf(책 제목 입력:);
scanf(%s, bknm2);
fgets(bknm,sizeof(bknm),booklist);
while(1)
{
fgets(bknm,sizeof(bknm),booklist);
a=strcmp(bknm,bknm2);
//printf(%d\n,a);
//printf(%s,%s\n,bknm,bknm2);
if (a==0)
{
printf(검색완료\n);
break;
}
if(feof(booklist)!=0)
{
printf(책이없습니다.\n);
break;
}
}
state=fclose(booklist);
if(state!=0)
{
printf(file close error\n);
return 1;
}
return 0;
}
같은 폴더에있는 booklist.txt를 읽어들여서 bknm에 저장하고 bknm2에 문자열을 입력받아서 비교를 한다는 생각으로 만든겁니다.
일단 이렇게 했는데
실행시키면무조건 책이 없다고 나오네요.
가운데쯤 주석처리되있는 printf문으로 확인해 보니까 문자열이 같은데도 같다고 출력이 안되더군요.
어떻게 수정해야 하나요?
파일을 출력하는 함수는 이렇게 구현해놓았습니다.
int insertf (void)
{
struct book bk;
int state;
FILE* booklist= fopen(booklist.txt,a+t);
if (booklist==NULL)
{
printf(file open error\n);
return 1;
}
//fseek(booklist,-1,SEEK_END);
printf (----------Insert Mode----------\n);
printf(name: );
scanf(%s, bk.name);
fprintf(booklist, %s\n, bk.name);
printf(ISBN: );
scanf(%s, bk.isbn);
fprintf(booklist, %s\n, bk.isbn);
printf(writer: );
scanf(%s, bk.writer);
fprintf(booklist, %s\n, bk.writer);
state=fclose(booklist);
if(state!=0)
{
printf(file close error\n);
return 1;
}
printf(----------Intsert End----------\n);
return 0;
}어떻게 해야 할까요?
전체소스
#include stdio.h
#include string.h
struct book
{
char name[20];
char isbn[20];
char writer[20];
};
int insertf(void);
int deletef(void);
int searchf(void);
int print_allf(void);
int main(void)
{
int n=0;
while(1)
{
printf(----------Menu----------\n);
printf(1.Insert\n2.Delete\n3.Search\n4.Print All\n5.Exit\n);
printf(Choose the item:);
scanf(%d,&n);
if (n==1)
{
insertf();
}
if (n==3)
{
searchf();
}
if (n==4)
{
print_allf();
}
if (n==5)
{
printf(good bye!\n);
break;
}
}
return 0;
}
int insertf (void)
{
struct book bk;
int state;
FILE* booklist= fopen(booklist.txt,a+t);
if (booklist==NULL)
{
printf(file open error\n);
return 1;
}printf (----------Insert Mode----------\n);
printf(name: );
scanf(%s, bk.name);
fprintf(booklist, %s\n, bk.name);
printf(ISBN: );
scanf(%s, bk.isbn);
fprintf(booklist, %s\n, bk.isbn);
printf(writer: );
scanf(%s, bk.writer);
fprintf(booklist, %s\n, bk.writer);
state=fclose(booklist);
if(state!=0)
{
printf(file close error\n);
return 1;
}
printf(----------Intsert End----------\n);
return 0;
}
int print_allf(void)
{
char book[20];
int a=0;
int state;
FILE*booklist= fopen(booklist.txt, rt);
if(booklist==NULL)
{
printf(file open error\n);
return 1;
}
while(1)
{
fgets(book, sizeof(book), booklist);
if(feof(booklist)!=0)
break;
printf(%s, book);
//a++;
//fputs(book, stdout);
}
//printf(%d,a);
state=fclose(booklist);
if(state!=0)
{
printf(file close error\n);
return 1;
}
return 0;
}
int searchf(void)
{
int bknm[20]={0};
int bknm2[20]={0};
int a;
int state;
FILE*booklist= fopen(booklist.txt, rt);
fseek(booklist,0,SEEK_SET);
printf(책 제목 입력:);
scanf(%s, bknm2);
fgets(bknm,sizeof(bknm),booklist);
while(1)
{
fgets(bknm,sizeof(bknm),booklist);
a=strcmp(bknm,bknm2);
printf(%d\n,a);
printf(%s,%s\n,bknm,bknm2);
if (a==0)
{
printf(검색완료\n);
break;
}
if(feof(booklist)!=0)
{
printf(책이없습니다.\n);
break;
}
}
state=fclose(booklist);
if(state!=0)
{
printf(file close error\n);
return 1;
}
return 0;
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |
2694900 | dequeue 에서 리턴값 프린트 방법알려주세요 오늘 12시까지 대화방에 있습니다 도와주세요 | 미투리 | 2025-05-15 |
2694854 | 절대값을 구할때 (2) | 그녀는귀여웠다 | 2025-05-15 |
2694827 | 이제 어떻게 공부해야할지 모르겠네요 | 새얀 | 2025-05-14 |
2694778 | 순열 계산요. | 맛조이 | 2025-05-14 |
2694754 | ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) | 파도 | 2025-05-14 |
2694731 | 리눅스 커널의 시작점 질문 | 미르 | 2025-05-13 |
2694702 | 이거 뭐가문제인가요 코드수정좀 (3) | 맑은 | 2025-05-13 |
2694675 | C언어 후위표기를 중위표기로 | 앨런 | 2025-05-13 |
2694646 | 안녕하세요 파일 합치기 함수! (1) | 연블루 | 2025-05-13 |