c언어 strcpy 문제 질문

조회수 646회

자꾸 strcpy(date) 이부분에서 오류가 뜬다고 나오는데 아무리 머리를 쥐어짜도 모르겠네요 ㅠㅠ 그리고 오류가 있어도 실행은 되는데 6번 일정입력기능을 들어가서 입력하면 계속진행되는게 아니라 프로그램이 종료되네요 이거 어떻게 해결해야 할까요 ??이미지

#include <stdio.h>
#include <string.h>
#define Title_LEN   20
#define Memo_LEN    20
#define MAX_DATA_NUM    100
#define Date_LEN    50






















struct member{ //회원정보
    char id; //학번
    char name[10]; //이름
    int contact; //연락처
    char address[100]; //주소
}typedef member;

struct scheduel { //동아리 일정
    int date[Date_LEN]; //날짜
    char title[Title_LEN]; //제목
    char memo[Date_LEN]; //메모
}typedef scheduel;

struct bookborrow{ //도서 대여정보
    int id[10]; //회원 번호
    int ISBN; //ISBN
    int borrow[100]; //대여날짜
    int return_[100]; //반납날짜
}typedef borrowreturn;





int compare(char *str1, char *str2); //비교함수
int num_total_book=0; //현재 책의 수
int num_borrowtotal_book=0; //현재 빌린 책의 수
int num_total_member=0; //현재 회원 수

int main(void)  {
    member mk[10] = {0}; //저장 크기

    borrowreturn bw[10] = {0};

    int index = 0; //주소값 지정
    int select; //동작 입력
    int del_index; //삭제, 수정용 주소값
    int i; //for문 반복 횟수용
    scheduel * parr; 
    int * pnum;
    /*사용자 메뉴 화면 출력(UI)*/

    while(1) {
    system("chs"); //콘솔창 지우기
    printf("\n-----------------------------\n");
    printf("   도서관 정보 시스템\n");
    printf("-----------------------------\n");
    printf(" ['1'] 새로운 회원 정보(회원번호, 이름, 연락처, 주소) 입력\n");
    printf(" ['2'] 기존 회원 정보 삭제\n");
    printf(" ['3'] 기존 회원 정보 수정\n");
    printf(" ['4'] 기존 회원 리스트 출력\n");
    printf(" ['5'] 회원 목록 중 이름 또는 연락처로 검색\n");
    printf("-----------------------------\n");
    printf(" ['6'] 일정입력\n");
    printf(" ['7'] 일정삭제\n");
    printf(" ['8'] 일정정 출력\n");
    printf(" ['9'] 일정 저장\n");
    printf(" ['10'] 일정\n");
    printf("-----------------------------\n");
    printf(" ['11'] 도서 대여정보(ISBN,회원번호, 대여날짜, 반납날짜) 입력\n");
    printf(" ['12'] 기존 대여 정보 수정\n");
    printf(" ['13'] 주어진 날짜(년 월 일)에 대여 중이거나 중이었던 도서리스트 출력\n");
    printf("-----------------------------\n");
    printf(" ['-1'] 프로그램 종료\n");
    printf("-----------------------------\n");
    printf("\n\n 원하시는 서비스를 선택하세요.");
    scanf("%d",&select);

            if(select == 5) { // [5] 회원 목록 중 이름 또는 연락처로 검색
                system("cls");
                printf("\n");
                int num_total_member;
                int user_m_input; // 사용자의 입력받기
                char user_m_search[30];


                printf("어느 것으로 검색 할 것인가요? \n");
                printf("1. 이름 검색 \n");
                printf("2. 연락처 검색 \n");
                scanf("%d", &user_m_input);
                printf("검색할 단어를 입력해주세요 : ");
                scanf("%s", &user_m_search);

                printf("검색 결과 \n"); 
                if (user_m_input == 1) { //이름과 검색어 비교
                    for (i = 0; i < num_total_member; i++) {
                        if (compare(mk[i].name, user_m_search)) {
                            printf("번호 : %d // 회원번호 : %d // 이름 : %s // 연락처 : %d // 주소 : %s \n", i,mk[i].id, mk[i].name,mk[i].contact, mk[i].address);
                            }
                        }
                }
                else if (user_m_input == 2) { //연락처와 검색어 비교
                    for (i = 0; i < num_total_member; i++) {
                        if (compare(mk[i].contact, user_m_search)) {
                              printf("번호 : %d // 회원번호 : %d // 이름 : %s // 연락처 : %d // 주소 : %s \n", i,mk[i].id, mk[i].name,mk[i].contact, mk[i].address);
                                }
                            }
                        }
                return 0;
            }
            else if(select == 6) { //[6]일정 입력
                system("cls"); //콘솔창 지우기

        int date[Date_LEN];
        char title[Title_LEN], memo[Memo_LEN];

        printf("[ INSERT ] \n");
        printf("일정입력 : "); scanf("%d", date);
        printf("제목입력: "); scanf("%s", title);
        printf("내용입력 : "); scanf("%s", memo);

       strcpy(parr[*pnum].date, date);//날짜데이터에 날짜저장
       strcpy(parr[*pnum].title, title);//제목데이터에 제목저장
       strcpy(parr[*pnum].memo, memo);//내용데이터에 내용저장
        (*pnum)++;//데이터 갯수 증가

    printf("--------> 입력완료!.....\n");
               }

            else if(select == 7){ //[7]일정 삭제
                system("cls");
                printf("\n");
                int i, j;
    char title[Title_LEN];//제목


    printf("[ Remove ] \n");
    printf("Input Name for Removing : "); scanf("%s", title);

    for(i=0; i < *pnum; i++)
    {
        if(strcmp(parr[i].title, title)==0)
        {
                for(j=i+1; j < *pnum; j++)
            {
                strcpy(parr[j-1].date, parr[j].date);
                strcpy(parr[j-1].title, parr[j].title);
                strcpy(parr[j-1].memo, parr[j].memo);
            }
            (*pnum)--;
            return 0;
        }
    }
            printf("-------> Data Not Found......\n");

            }
            else if(select == 8) { //[8] 일정출력
                system("cls");
                printf("\n");
                    int i, num;
    printf("[ Print All Data ] \n");

    for(i=0; i<num; i++)
        printf("날짜 : %d / 제목 : %s /  내용 : %s\n", parr[i].date, parr[i].title,parr[i].memo);

                }
            else if(select == 9) { //[9] 일정
                system("cls");
                printf("\n");
                    FILE * file = fopen("a.txt", "rt");
    if(file==NULL)
    {   
        return 0;   
    }

    while(1)
    {
        fscanf(file, "%d %s %s", parr[*pnum].date, parr[*pnum].title,parr[*pnum].memo);
        if(feof(file)!=0)
            break;
        (*pnum)++;
    }
            }
            else if(select == 10) { //[10] 일정 저장
                system("cls");
                printf("\n");
                int i,num;

    FILE * file = fopen("a.txt", "wt");
    if(file==NULL)
    {
        printf("file open error!\n");
        return 0;
    }
    for(i=0; i<num; i++)
        fprintf(file, "%d %s %s ", parr[i].date, parr[i].title, parr[i].memo);
         } 

}     
return 0; 
}
int compare(char *str1, char *str2) { /*문자열 비교 함수*/
  while (*str1) {
    if (*str1 != *str2) { //str과 str2가 같을 경우 실행, 아닐 경우 지나감
      return 0;
    }
    str1++;
    str2++;
  }
  if (*str2 == '\0') //NULL 삽입
    return 1;
  return 0;
}

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)