디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

나로호 분위기에 c언어 질문투척

행인34792갤로그로 이동합니다. 2010.06.10 18:58:37
조회 159 추천 0 댓글 3

도서관리 프로그램을 과제로 하고있습니다만

수정함수에서 막혔습니다. 이것만 하면 되는데..
strcpy로 덮어쓰기를 생각해봤는데 잘 안되네요..
공부를 설렁설렁해서 그런지 네이버에 한참 찾아보고 여러가질 해도 잘 모르겠습니다.
가르침을 주신다면 감사하겠습니다.
방향성만이라도 제시해주신다면 감사하겠습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

//상수정의
#define YES 1
#define NO 0

//변수 및 구조체
struct record{
        char name[30+1]; //제목+NULL
        char auth[30+1]; //저자명+NULL
        char publ[30+1]; //출판사+NULL
} rec;

//함수 원형
void display_usage(char *filename);
int display_menu(void);
void set_data(FILE *fp);
void display_report(FILE *fp);
void del(FILE *fp);
void modify(FILE *fp);
int continue_function(void);
int look_up(FILE *fp);

int main(void)
{
        FILE *fp;
        int cont=YES;

        //파일열기
        if((fp=fopen("booklist", "a+"))==NULL)
        {
                fprintf(stderr, "error opening file");
                exit(1);
        }

        while(cont==YES)
        {
                switch(display_menu())
                {
                case \'1\': set_data(fp);
                        break;
                case \'2\': display_report(fp);
                        break;
                case \'3\': del(fp);
                        break;
                case \'4\': modify(fp);
                        break;
                case \'5\': printf("\\n\\n 감사합니다.\\n");
                        cont=NO;
                        break;
                default: printf("\\n\\n1에서 4사이의 정수를 입력하세요.\\n");
                        break;
                }
        }
        fclose(fp); //파일 닫기
        return 0;
}

        int display_menu(void) //메뉴를 출력
        {
                char ch, buf[20];

                printf("도서관리시스템\\n");
                printf("1. 도서 정보 입력\\n");
                printf("2. 도서 정보 출력\\n");
                printf("3. 도서 정보 삭제\\n");
                printf("4. 도서 정보 수정\\n");
                printf("5. 끝내기\\n\\n");
                printf("메뉴를 선택하세요 : ");
                gets(buf);
                ch=*buf;
                return(ch);
        }

        void set_data(FILE *fp) //정보를 입력받아서 파일에 기록, 저장기능입니다.
        {
                int cont=YES;

                while(cont==YES)
                {
                        printf("\\n\\n도서 정보를 입력합니다.\\n\\n");
                        printf("도서명 : ");
                        gets(rec.name);
                        printf("저자명 : ");
                        gets(rec.auth);
                        printf("출판사 : ");
                        gets(rec.publ);
                        printf("입력 완료\\n\\n");

                        if(fseek(fp, 0, SEEK_END)==0)
                                if(fwrite(&rec, 1, sizeof(rec), fp)!=sizeof(rec))
                                {
                                        fprintf(stderr, "Error writing to file");
                                        exit(2);
                                }

                                cont=continue_function();
                }
        }

int continue_function(void) //입력의 계속 여부를 확인
{
        char ch, buf[20];

        do
        {
                printf("더 입력하시겠습니까? (Y)es/(N)o  ");
                gets(buf);
                ch=*buf;
        }while(strchr("NnYy", ch)==NULL);
        if(ch==\'n\'||ch==\'N\')
                return(NO);
        else
                return(YES);
}

void display_report(FILE *fp) //파일에 저장된 도서 리스트 출력, 조회기능입니다.
{
        time_t rtime;
        int num_of_recs=0;

        time(&rtime);

        fprintf(stdout, "\\n\\n실행 시간 : %s", ctime(&rtime));
        fprintf(stdout, "\\n도서 리스트 출력\\n");

        if(fseek(fp, 0, SEEK_SET)==0)
        {
                fread(&rec, 1, sizeof(rec), fp);

                while(!feof(fp))
                {
                        fprintf(stdout, "\\n\\t도서명 : %s // 저자명 : %s // 출판사 : %s", rec.name, rec.auth, rec.publ);
                        num_of_recs++;
                        fread(&rec, 1, sizeof(rec), fp);
                }

                fprintf(stdout, "\\n\\n 총 리스트 수 : %d", num_of_recs);
                fprintf(stdout, "\\n - - - 출력 완료 - - -");
        }
        else
                fprintf(stderr, "\\n\\n*** ERROR WITH REPORT ***\\n");
}

void modify(FILE *fp) //도서 데이터를 검색해 수정, 수정기능입니다.
{
        char i[30+1], j, k, tmp_name[30+1];

        fprintf(stdout, "\\n\\n 도서명을 정확히 입력하세요 : ");
        gets(tmp_name);

        if(strlen(tmp_name)!=0)
        {
                if(fseek(fp, 0, SEEK_SET)==0)
                {
                        fread(&rec, 1, sizeof(rec), fp);

                        while(!feof(fp))
                        {
                                if(strcmp(rec.name, tmp_name)==0)
                                {
                                        fprintf(stdout, "\\n\\t도서명 : %s // 저자명 : %s // 출판사 : %s\\n\\n", rec.name, rec.auth, rec.publ);
                                        printf("새로운 도서명 : ");
                                        gets(i);
                                        strcpy(i, rec.name);
                                }

                                fread(&rec, 1, sizeof(rec), fp);
                        }
                }
        }
        else
        {
                fprintf(stdout, "\\n 일치하는 결과가 없습니다.\\n");
        }
}

void del(FILE *fp) //파일에 저장된 데이터를 삭제, 삭제기능입니다.
{
        char ch, buf[20];

        printf("\\n\\n도서 정보를 삭제합니다. (Y)es/(N)o   ");
        gets(buf);
        ch=*buf;

        if(ch==\'Y\')
                fopen("booklist", "w")==NULL;

        else if(ch==\'N\')
                printf("메인 메뉴로 돌아갑니다.\\n");

        else
                printf("Y 혹은 N을 입력해주세요.\\n");
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
이슈 [디시人터뷰] 라이징 스타로 인정받은 걸그룹, ‘리센느(RESCENE)’ 운영자 24/11/08 - -
설문 축의금 적게 내면 눈치 줄 것 같은 스타는? 운영자 24/11/11 - -
210894 궁금한게있는데 현재 자신의 키+발기한 잦이길이 = 200 넘는사람있음?? 갤러그(220.95) 10.10.05 90 0
210893 이거의 답이 30이거나 29인사람???? [8] 갤러그(220.95) 10.10.05 142 0
210892 주어진 숫자 190cm로 키와 잦이 크기에 분배하시오 [5] FalCon갤로그로 이동합니다. 10.10.05 137 0
210891 ㅋㅋ 내 계산기 셔틀 소스 못봤나보네 ㅋㅋㅋ [1] [성대아싸]갤로그로 이동합니다. 10.10.05 159 0
210890 현 나이에서 돌아가고싶은 나이까지의 시간을 남은수명에서 뺀뒤 돌려준다면 [9] 갤러그(220.95) 10.10.05 86 0
210889 우리학교 수학 문제였는데 이거 이상하지 않음? [3] 이에갤로그로 이동합니다. 10.10.05 157 0
210888 픽업아티스트 하니까 생각나는데 [2] 개쉛기갤로그로 이동합니다. 10.10.05 117 0
210887 웹프랑 웹디가 같다고?;; [2] 일광면갤로그로 이동합니다. 10.10.05 91 0
210885 형들은 프로그래머가 꿈이었고 그 꿈을 후회안해? [14] 원싸갤로그로 이동합니다. 10.10.05 202 0
210884 롯데 자이언츠 내년 시즌이 기대된다. ㅇㅇㅃ갤로그로 이동합니다. 10.10.05 51 0
210882 프로그래밍 처음 배워보는데요.. 왜렇게 어렵나요 [6] (112.146) 10.10.05 125 0
210881 왜 우리집에선 gcc 안됨? [3] ㄷㅁㄷㄾㅎ(218.237) 10.10.05 87 0
210880 우리나라에서는 게임 프로그래밍 쪽에는 어떤 언어를 많이 써? [8] 제페갤로그로 이동합니다. 10.10.05 180 0
210879 아 좀 도와줄형들 찾아 ㅠㅠ 간단한 프로그램인데 난 돌대가린가봐 [17] 니미블라드갤로그로 이동합니다. 10.10.05 136 0
210878 님들이 뭘 모르네염. 한국이 그래도 제일 먹고 살만함여. [1] 씬입사원갤로그로 이동합니다. 10.10.05 143 0
210877 현업종사하는 횽들은 수학 어디까지 마스터하심?? [4] 갤러그(220.95) 10.10.05 144 0
210876 프로그래밍 글짓기를 배워야함 라우갤로그로 이동합니다. 10.10.05 54 0
210875 llegal case<--- 횽들 이렇게 에러가 나는데 이건 뭐야?ㅠ 니미블라드갤로그로 이동합니다. 10.10.05 47 0
210874 c언어 공부할때 문제같은거는 수학처럼 풀릴때까지 머리계속굴리는게 좋은거? [5] 갤러그(220.95) 10.10.05 127 0
210873 웹프가 웹디자인까지 잘하면 어케됨? [3] 116.44(116.44) 10.10.05 139 0
210872 rntjr 형은 봅니다. 니미블라드갤로그로 이동합니다. 10.10.05 36 0
210869 픽업아티스트는 존나잉여들. [6] 빕뱟뱟갤로그로 이동합니다. 10.10.05 207 0
210868 횽들 질문좀 [6] H-kismet(183.100) 10.10.05 101 0
210867 돈과 여자의 공통점이 뭔지 아냐 [2] 개쉛기갤로그로 이동합니다. 10.10.05 136 0
210866 횽들은 플그래밍 공부한지 얼마만에 깨우침? [2] 갤러그(220.95) 10.10.05 98 0
210864 나 아무래도 머리가 썩어가는득 [1] 개쉛기갤로그로 이동합니다. 10.10.05 81 0
210863 횽님들 중에 Mylogic 가지고 계신분 잇나요?/ 깐깐징어(118.45) 10.10.05 83 0
210861 일반인들이 잘 착각하는 것중 하나 - 프로그래머들은 다 결벽증이 있나요? [3] ㅇㅇ(222.107) 10.10.05 155 0
210859 도둑놈 새끼들, 프로그램을 돈 안내면 못쓰게 해놨네. [1] Ordinary Day갤로그로 이동합니다. 10.10.05 97 0
210856 니마 블러드 나는 10줄임 116.44(116.44) 10.10.05 63 0
210855 니미블라드는 봅니다. 미안하다 수정했다 ㅋㅋ [3] rntjr갤로그로 이동합니다. 10.10.05 89 0
210854 랩잘해봐야 아무소용없음 [1] 빕뱟뱟갤로그로 이동합니다. 10.10.05 77 0
210853 사회이야기가 나와서 하는 말인데. [5] 씨발라드세요(112.218) 10.10.05 123 0
210851 헌법 39조.. [5] rntjr갤로그로 이동합니다. 10.10.05 154 0
210849 아래 sql 물어본 사람 [2] 116.44(116.44) 10.10.05 109 0
210847 남여평등.. rntjr갤로그로 이동합니다. 10.10.05 94 0
210846 쫌 예쁘고 귀여움... [4] rntjr갤로그로 이동합니다. 10.10.05 179 0
210845 니미블라드는 봅니다. 가고 없는거 아냐? [12] rntjr갤로그로 이동합니다. 10.10.05 153 0
210844 윽.. 이거 sql 왜 안되는거지 ㅜㅜ [4] 아아..(123.142) 10.10.05 85 0
210842 오늘 하루죙일날 물먹인 버그는 IE7에서 일어났던거야 넉넉한터갤로그로 이동합니다. 10.10.05 78 0
210841 아 서영은 너무 좋다 [3] 116.44(116.44) 10.10.05 94 0
210839 두바이엔 술을 안파니까 고롭네... [2] 물속의다이아갤로그로 이동합니다. 10.10.05 198 0
210838 존나 간단한 명령이 예외내뱉던게 컴퓨터 껐다 켰더니 된다... [4] 개쉛기갤로그로 이동합니다. 10.10.05 143 0
210836 스타2를 하면서 [6] Vita500갤로그로 이동합니다. 10.10.05 166 0
210835 존나 쉬운 명령인데 예외가 떨어졌다.. [4] 개쉛기갤로그로 이동합니다. 10.10.05 131 0
210832 코드 들여쓰기 없애주는 프로그램이나 코드 아는 형 [7] Ordinary Day갤로그로 이동합니다. 10.10.05 118 0
210831 나도 진짜 이름 있는 회사 들어가고싶다 [7] 달걀소년갤로그로 이동합니다. 10.10.05 224 0
210830 얼굴책.지껄이다 IT의 시작은 지금부터다. [2] 씨발라드세요(112.218) 10.10.05 119 0
210829 지금 1학년인데 dd(211.253) 10.10.05 53 0
210828 아 진로고민중이야 [8] dd(211.253) 10.10.05 164 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2