수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

구조체를 사용한 명함만드는 소스인데요..

매디

2023.04.01

코드를 보시면 아시겠지만 명함만드는 소스입니다. 하루종일해서 겨우만들었는데 입력조회 다 되는데 삭제가 안되네요..
너무 오래 만들어서 그런지 오류가 보이지않습니다... 오류좀 찾아주세요..ㅠㅠ

#include stdio.h
#include string.h
#include stdlib.h
#define QUIT 5 //상수
//구조체 정의
typedef struct Namecard{
char name[20];
char tel[15];
char email[20];
struct Namecard *next;
}Namecard;
//함수 선언
int menu();//선택메뉴
void creatNode(Namecard *ptr); //노드생성
void freeNode(Namecard *node); //노드삭제(all)
void initNamecard(Namecard *Namecard); //개인정보입력
void printNode(Namecard *node );// 화면에 출력
void searchNamecard(Namecard *node);//사람찾기
Namecard *searchNode(Namecard *node, char ch[] );// ch값 찾기
//메인 함수
int main()
{
Namecard *sNode, *posi;
int choice=0;
FILE *fp;
sNode=(Namecard *)malloc(sizeof(Namecard));
sNode-next=NULL;
while(choice !=QUIT)
{
choice=menu();
switch(choice)
{
case 1: //입력
if(sNode-next==NULL)
{
creatNode( sNode );
posi = sNode-next;
}
else
{
creatNode( posi );
posi = posi-next;
}
break;
case 2:// 조회
searchNamecard( sNode );
break;
case 3:// 삭제
break;

case 4:// 출력
printNode( sNode-next );
break;
default:
break;
}
}
if( sNode != NULL )
freeNode( sNode );
}
//함수 정의
//메뉴 함수 반한값 : 정수
int menu()
{
int choice;
do
{
printf(========================\n);
printf(\t1. 입력\n);
printf(\t2. 조회\n);
printf(\t3. 삭제\n);
printf(\t4. 출력\n);
printf(\t%d. QUIT\n, QUIT);
printf(========================\n Choice : );
scanf(%d, &choice );

fflush(stdin);
}
while( choice 0 || choice QUIT );
return choice;
}
//creatNode()
//처음 데이터 입력시 node 생성 함수
//initNamecard()함수호출
//반한값 : 없음
void creatNode(Namecard *node)
{
Namecard *temp;
temp = (Namecard *)malloc(sizeof(Namecard));
initNamecard(temp);
temp-next = NULL;
node-next = temp;

}
// initNameard() 개인정보 입력
void initNamecard(Namecard *Namecard)
{
printf(\n\n========================\n);
printf(이름을 입력하세요\n : );
fflush(stdin);
gets(Namecard-name);
fflush(stdin);
printf(전화번호를 입력하세요\n : );
fflush(stdin);
gets(Namecard-tel);
fflush(stdin);
printf(E-mail를 입력하세요\n : );
fflush(stdin);
gets(Namecard-email);
printf(========================\n\n);
fflush(stdin);
}
//node 출력함수
//반환값 : 없음
void printNode(Namecard *node )
{
while( node-next != NULL )
{
printf(\n=========================\n);
printf( 이름 : %s\n, node-name );
printf( Tel : %s\n, node-tel );
printf(E-mail : %s\n, node-email );
printf(=========================\n\n);
node = node-next;
}
// 마지막
printf(\n=========================\n);
printf( 이름 : %s\n, node-name );
printf( Tel : %s\n, node-tel );
printf( E-mail : %s\n, node-email);
printf(=========================\n);
printf(\n);
}

//값의 위치를 찾는 함수
//(위치는 그값의 위치가 아닌 그 이전 위치)
//반환값 : node or NULL
Namecard *searchNode(Namecard *node, char ch[])
{
while( node-next != NULL )
{
if( strcmp(node-next-name, ch) == 0 )
{
return node;
}
node = node-next;
}
return NULL;
}

//searchNamecard()
//사람이름에 따른 조회함수
//함수내에서 searchNode()함수호출
void searchNamecard(Namecard *node)
{
char ch[20];
Namecard *temp;
printf(\n===============================\n);
printf( 찾는사람의 이름을 입력하세요\n : );
fflush(stdin);
scanf(%s, ch );
temp = searchNode( node, ch );
if( temp != NULL )// not empty
{
printf(\n===============================\n);
printf( 이름 : %s\n, temp-next-name );
printf( Tel : %s\n, temp-next-tel );
printf( E-mail : %s\n, temp-next-email );
printf(===============================\n);
}
else
{
printf(\n===============================\n);
printf( 찾는 사람이 없습니다. \n);
printf(===============================\n);
}
}
//node free 함수
void freeNode(Namecard *node)
{
if(node == NULL);
else {
freeNode(node-next);
free(node);
}
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 아빠몬

    버그를 찾는 가장 좋은 방법은. 디버깅을 하는 것입니다.
    ide툴(비쥬얼스투디오 등)을 이용해서 디버깅해서 한단계씩 진행해서 찾을 수 있습니다.

    그러니 우선 디버깅하는 법을 배워 보세요~

    저렇게 길게, 들여쓰기도 짧게 되어있어서 보기 힘든 소스를 봐 주는 사람은 없습니다.
    수다님께서 그런 소스를 봐 줬다는것 조차도 고마워해야 할 판입니다.

    간단한 코드는 디버깅하는 법을 배우면 묻지 않고도 해결 할 수 있습니다.
    꼭, 디버깅하는 법을 배우세요.

번호 제 목 글쓴이 날짜
2695984 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) 들꿈 2025-05-25
2695934 tr 속성값 (9) 새 2025-05-25
2695905 ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) 슬아라 2025-05-24
2695878 form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) 핫파랑 2025-05-24
2695844 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) 한빛 2025-05-24
2695814 [질문] PDA에서 애플릿이 가능한가요? (1) 봄시내 2025-05-24
2695785 웹 설정 도와줄분 화이트캣 2025-05-23
2695730 갑자기 기억이 안나는데 accesskey 속성.. 빛나라 2025-05-23
2695702 [질문] Java 버전 차이에 의한 오류?!! (2) 검사 2025-05-23
2695672 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) 뽀그리 2025-05-22
2695647 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) 아빠몬 2025-05-22
2695586 IFRAME 캐싱 질문 봄나비 2025-05-22
2695498 [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; 터1프한렩 2025-05-21
2695468 자바랑 이클립스에서요.. 스킬 2025-05-21
2695375 Mysql 연동하는 자바 질문있습니다. 아리솔 2025-05-20
2695319 파워포인트 파일을 저장할 수 있을까요? 시윤 2025-05-19
2695289 [질문]Tween 값의 정도를 알고 싶습니다. 타마 2025-05-19
2695238 c 와 c++의 시작 (10) ChocoHoilc 2025-05-18
2695215 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ 널위해 2025-05-18
2695187 자바스크립트와 자바의 import에 관해서 질문드려요 (1) 무슬 2025-05-18
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com