[C언어]도서관프로그램
// C언어 초보입니다. 도서 하나를 이름과 작가 메모를 입력해서
출력하게 하는 연습인데 제목이랑 작가, 메모를 입력하면 죽어버리네요!! ㅜㅜ
무엇이 문제일까요?!! 도와주세요 //
#include
#include
#include
#pragma warning(disable:4996)
#define TMAX 30
#define WMAX 20
#define MMAX 50
struct BOOK
{
char name_of_book[TMAX];
char name_of_writer[WMAX];
char memo[MMAX];
};
int main(void)
{
int ing = 0;
int cmd;
struct BOOK *book = malloc(sizeof(struct BOOK));
while (1) {
printf("0.종료 1.도서목록 2.도서추가 3.도서삭제\n\n");
printf("명령:");
scanf("%d", &cmd);
switch (cmd)
{
case 0:
exit(1);
case 1:
bview(book, &ing);
break;
case 2:
badd(book, &ing);
break;
}
return 0;
}
}
int bview(struct BOOK *b1, int *ing)
{
printf("%s\n", b1->name_of_book);
printf("%s\n", b1->name_of_writer);
printf("%s\n", b1->memo);
}
int badd(struct BOOK *b1, int *ing)
{
printf("도서제목:");
scanf_s("%s", b1->name_of_book, sizeof(struct BOOK));
printf("저자이름:");
scanf_s("%s", b1->name_of_writer, sizeof(struct BOOK));
printf("메모:");
scanf_s("%s", b1->memo, sizeof(struct BOOK));
ing += 1;
}
입력받다 죽는 건 많은 경우 메모리에서 할당받은
입력받다 죽는 건 많은 경우 메모리에서 할당받은 유효한 공간을 벗어나서 값을 쓰거나 읽으려고 해서일 때가 많으니 그것 위주로 살펴보시고요.
좋은 하루 되세요!
https://kldp.org/node/158191
https://kldp.org/node/158191 참고해서 소스코드 보여주셔요.
컴파일은 되는데 실행하면 죽는다면, 컴파일할 때 나오는 Error 뿐 아니라 Warning 도 잘 보셔요.
메모리 관련 경고가 있을 겁니다.
세벌 https://sebuls.blogspot.kr/
댓글 달기