죄송합니다. 글 내리겠습니다.
오류로그를 올려주세요
그리고
#include #include #include #include
인클루드는 비어있었나요?
#include 이건 기본으로 들어가야하고요.. 나머지도 필요한거 들어가야하는데
아래의 입력 형식을 참고하여서 코드 부분을 코드 태그로 감싸주세요
그리고 질문은 질문 게시판이 적절합니다.
피할 수 있을때 즐겨라! http://melotopia.net/b
코드 부분을 코드 태그로 감싸라는 것이 무엇인지 이해를 잘 못하겠습니다.(프로그래밍 초보입니다.^^;) 질문은 질문게시판을 이용토록 하겠습니다.(처음이여서 글을 잘못올렸네요.죄송합니다.^^;)
실행 되는 검증된 안전한 소스'를 구해서 연습하시는게 좋습니다. 소스를 조금씩 나눠서 직접 만들며. 분석해 보세요. 이 소스는 VS 6.0에서 되기는 했지만. 버그가 많네요.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <ctype.h> struct addr_list { char st_no[10]; char name[12]; char id_no[13]; char addr[30]; char hp[12]; char home_ph[12]; struct addr_list *next; }; struct addr_list *head= NULL; int count() { struct addr_list *cur = head; int num=0; while(1) { if (cur == NULL) { return num; } else { num++; cur = cur -> next; } } } void list() { struct addr_list *cur = head; printf("the resulrting list is "); while(1) { printf("\n학번 : %s\n", cur->st_no); printf("이름 : %s\n", cur->name); printf("주민번호 : %s\n", cur->id_no); printf("주소 : %s\n", cur->addr); printf("휴대전화 : %s\n", cur->hp); printf("집전화 : %s\n", cur->home_ph); printf("----->"); if (cur->next == NULL) { printf("NULL\n"); break; } else { cur = cur -> next; } } } void create_node() { struct addr_list *list, *pre_list; while(1) { list = (struct addr_list*) malloc(sizeof(struct addr_list)); if (head == NULL) { head = list; } else { pre_list->next = list; } printf("\n학번을 입력하시오: , 입력의 끝은 enter를 누르시오!"); gets(list->st_no); if ( *(list->st_no) == '\0' ) { free (list); pre_list->next = NULL; break; } printf("이름을 입력하시오:"); gets(list->name); printf("주민번호를 입력하시오:"); gets(list->id_no); printf("주소를 입력하시오:"); gets(list->addr); printf("휴대폰 번호를 입력하시오:"); gets(list->hp); printf("집 전화번호를 입력하시오:"); gets(list->home_ph); list -> next = NULL; pre_list = list; } } void update_node() { char st_no[10], yesno, sw='n'; struct addr_list *cur; printf("\n변경할 학번을 입력하시오:"); gets(st_no); if (head == NULL) { printf("연결리스트가 없음\n"); exit(0); } cur = head; while(cur) { if (strcmp(cur->st_no, st_no) == 0) { printf("\n학번 : %s\n", cur->st_no); printf("이름 : %s\n", cur->name); printf("주민번호 : %s\n", cur->id_no); printf("주소 : %s\n", cur->addr); printf("주소를 변경하십니까? (y/n) : "); if ( yesno=getche() == 'y') { printf(" 주소를 입력하시오! :"); gets(cur->addr); } printf("휴대전화 : %s\n", cur->hp); printf("휴대전화를 변경하십니까? (y/n) : "); if ( yesno=getche() == 'y') { printf(" 휴대전화를 입력하시오! :"); gets(cur->hp); } printf("집전화 : %s\n", cur->home_ph); printf("집전화를 변경하십니까? (y/n) : "); if ( yesno=getche() == 'y') { printf(" 집전화를 입력하시오! :"); gets(cur->home_ph); } sw='y'; break; } else { cur = cur->next; } } if (sw == 'n') { printf ("\n변경할 학번이 없습니다."); } } void insert_node() { struct addr_list *list, *pre_list, *cur; list = (struct addr_list *) malloc(sizeof(struct addr_list)); if (list==NULL) { printf("memory overflow\n"); exit(0); } printf("\n학번을 입력하시오:"); gets(list->st_no); printf("이름을 입력하시오:"); gets(list->name); printf("주민번호를 입력하시오:"); gets(list->id_no); printf("주소를 입력하시오:"); gets(list->addr); printf("휴대폰 번호를 입력하시오:"); gets(list->hp); printf("집 전화번호를 입력하시오:"); gets(list->home_ph); list->next = NULL; if (head == NULL) { head = list; list->next=NULL; printf("0000"); } else { if (strcmp(head->st_no, list->st_no) >= 0) { list ->next = head; head = list; } else { pre_list = head; while(1) { cur = pre_list->next; if (strcmp(cur->st_no, list->st_no) >= 0 ) { list->next = cur; pre_list->next = list; break; } else if (strcmp(cur->st_no, list->st_no) == 0) { printf("same data duplicated"); exit(0); } else if (cur->next == NULL) { cur->next = list; list->next = NULL; break; } pre_list = cur; } } } printf("************** 학번 %s 삽입되었습니다.\n", list->st_no); } void remove_node() { struct addr_list *pre_list, *cur; char st_no[10]; printf("\n삭제할 학번을 입력하시오:"); gets(st_no); if (head == NULL) { printf("연결리스트사 없음\n"); exit(0); } cur = head; if (strcmp(cur->st_no, st_no) == 0) { head = cur->next; printf("************** 학번 %s 삭제되었습니다.\n", st_no); free(cur); } else { pre_list = cur; while(1) { cur = pre_list->next; if (strcmp(cur->st_no, st_no) == 0) { pre_list->next = cur->next; printf("******** 학번 %s 삭제되었습니다.\n", st_no); free(cur); break; } if (cur->next == NULL) { printf("삭제할 학번 %s이 존재하지 않습니다\n", st_no); break; } pre_list = cur; } } } int main(int argc, char* argv[]) { char s[10]; while(1) { printf("\n*******************************************\n"); printf("생성C, 변경U, 추가I, 삭제D, 출력L, 종료Q : "); gets(s); *s = toupper(*s); switch(*s) { case 'C' : create_node(); break; case 'U' : update_node(); break; case 'D' : remove_node(); break; case 'I' : insert_node(); break; case 'L' : list(); printf("this list has %d element\n", count()); break; case 'Q' : exit(0); } } free (head); return 0; }
---------------------------------------------------------------------------- 젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다. 정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
정말 저에게는 크나큰 도움이 되었습니다. 감사합니다.^^
업데이트된 질문을 봤는데... 설마 shint 님이 올려준 코드를 일일이 타이핑하신건가요? 오타가 많아졌네요. shint님 코드는 오류가 없습니다.
그리고 에러의 갯수는 중요하지 않습니다. 초보때 실수하는게 에러가 수백개 뜨면 "이걸 어떻게 다 잡아..." 하고 좌절하는건데, 특히 초보때는 에러가 2천개가 나와도 한두군데만 고치면 한꺼번에 해결되는 경우가 많습니다. 맨 위에 나오는 에러부터 차근차근 확인해보세요.
오류로그를 올려주세요 그리고 #include
오류로그를 올려주세요
그리고
#include
#include
#include
#include
인클루드는 비어있었나요?
#include 이건 기본으로 들어가야하고요.. 나머지도 필요한거 들어가야하는데
아래의 입력 형식을 참고하여서 코드 부분을 코드
아래의 입력 형식을 참고하여서 코드 부분을 코드 태그로 감싸주세요
그리고 질문은 질문 게시판이 적절합니다.
피할 수 있을때 즐겨라! http://melotopia.net/b
감사합니다.
코드 부분을 코드 태그로 감싸라는 것이 무엇인지 이해를 잘 못하겠습니다.(프로그래밍 초보입니다.^^;)
질문은 질문게시판을 이용토록 하겠습니다.(처음이여서 글을 잘못올렸네요.죄송합니다.^^;)
소스를 분석하실때는
실행 되는 검증된 안전한 소스'를 구해서 연습하시는게 좋습니다.
소스를 조금씩 나눠서 직접 만들며. 분석해 보세요.
이 소스는 VS 6.0에서 되기는 했지만. 버그가 많네요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
정말 감사합니다.
정말 저에게는 크나큰 도움이 되었습니다. 감사합니다.^^
업데이트된 질문을 봤는데... 설마 shint 님이
업데이트된 질문을 봤는데... 설마 shint 님이 올려준 코드를 일일이 타이핑하신건가요?
오타가 많아졌네요. shint님 코드는 오류가 없습니다.
그리고 에러의 갯수는 중요하지 않습니다. 초보때 실수하는게 에러가 수백개 뜨면 "이걸 어떻게 다 잡아..." 하고 좌절하는건데,
특히 초보때는 에러가 2천개가 나와도 한두군데만 고치면 한꺼번에 해결되는 경우가 많습니다.
맨 위에 나오는 에러부터 차근차근 확인해보세요.