수다닷컴

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

틀린부분좀 알려주세요

여울가녘

2023.04.01

저장하고 다시 읽어들일때 계속 메모리 오류가 납니다..
어디를 수정하면 좋을지 알려주시면 감사하겠습니다.. ㅠ_ㅠ

#include stdio.h
#include stdlib.h
#include string.h
int save=0;// 저장되어 있는 갯수
#define MAX 10// 저장 갯수 한계치
FILE *fp;
struct number// 번호 저장
{
char* home_tel;// 집
char* cell_tel;// 핸드폰
};
struct user// 정보 저장
{
char* name;// 이름
char* address;// 주소
struct number tel;// 번호
struct user* link;// 다음 개체 링크
} bc;
struct user* head;
int menu_f();// 메뉴함수
void save_f();// 저장함수
void print_f(struct user*);// 출력함수
void search_name();// 탐색(이름)함수
void search_num();// 탐색(번호)함수
void allprint_f();// 모두출력함수
void exit_f();// 종료함수
void input_f();// 파일입력함수
void main()
{
int menu;
input_f();// 파일에서 불러옴
while(1)// 무한루프
{
menu=menu_f();// 메뉴를 불러냄

switch(menu)
{
case 1 : save_f();
printf(\n);
break;

case 2 : search_name();
printf(\n);
break;

case 3 : search_num();
printf(\n);
break;

case 4 : allprint_f();
break;
case 5 : printf(종료합니다.\n);
exit_f();

default : printf( !잘못된 입력입니다.\n);
break;
}
}
printf(\n);
}
/* 메뉴 함수 */
int menu_f()
{
int menu;
printf( □□□□전화번호부 (%d/%d)□□□□ \n, save, MAX);// 저장된 갯수 표시
printf( ■■■■ 1.정 보 입 력 ■■■■\n);
printf( ■■■■ 2.이름으로 찾기 ■■■■\n);
printf( ■■■■ 3.전화번호 찾기 ■■■■\n);
printf( ■■■■ 4.모 두 출 력 ■■■■\n);
printf( ■■■■ 5.프로그램 종료 ■■■■\n\n);
printf(메뉴를 입력하시오 : );

scanf(%d,&menu);// 메뉴 선택
fflush(stdin);

return menu;
}
/* 저장 함수 */
void save_f()
{
int i;
char temp[100];
struct user* t;

i=save;

if(MAX=i)
{
printf( !저장공간이 다 찾습니다.\n);
}
else
{
t=(struct user*)malloc(sizeof(struct user));
head=t;
printf( *이름을 입력하시오 : );
gets(temp);
head-name =(char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-name, temp);
printf( *주소를 입력하시오 : );
gets(temp);
head-address =(char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-address, temp);
printf( *집전화 번호를 입력하시오 : );
gets(temp);
head-tel.home_tel =(char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-tel.home_tel, temp);
printf( *핸드폰 번호를 입력하시오 : );
gets(temp);
head-tel.cell_tel =(char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-tel.cell_tel, temp);
save++;// 핸드폰 번호까지 입력 받은 것 = 번호 1개 저장

if(head-link==NULL)
{
head=t;
head-link=t;
t-link=NULL;
}
else
{

}
}
}
/* 출력 함수 */
void print_f(struct user* p)
{
printf(--------------------------------------\n);
printf( 이 름 : %s\n, p-name);
printf( 주 소 : %s\n, p-address);
printf( 집전화번호 : %s\n, p-tel.home_tel);
printf( 핸드폰번호 : %s\n, p-tel.cell_tel);
printf(--------------------------------------\n);
}
/* 탐색(이름) 함수 */
void search_name()
{
char temp[100];
struct user* p;
p=head;
printf(이름을 입력하세요 : );
scanf(%s, temp);
for (; p!=NULL ; p=p-link)
{
if (!strcmp (temp, p-name))
{
print_f(p);
}
else
{
printf( !당신이 찾는 사람이 없습니다. \n);
}
}

}
/* 탐색(번호) 함수 */
void search_num()
{
char temp[20];
struct user* p;
p=head;
printf(숫자를 입력하세요 : );
scanf(%s, temp);
for (; p!=NULL ; p=p-link)
{
if (!strcmp(temp, head-tel.home_tel) || !strcmp(temp, head-tel.cell_tel))
{
print_f(p);
}
else
{
printf( !당신이 찾는 사람이 없습니다. \n);
}
}
}
/* 모두 출력 함수 */
void allprint_f()
{
struct user* p;

p=head;
if(save==0)
printf( !등록된 정보가 없습니다.\n\n);
for(; p!=NULL ; p=p-link)
{
print_f(p);
}
printf(\n);
}
/* 종료 함수 */
void exit_f()
{
int i=0;
struct user* p;
p=head;
fp=fopen(telbook.txt,w);

ffor(; p!=NULL ; p=p-link)
{
fprintf(fp, %s\n, p-name);
fprintf(fp, %s\n, p-address);
fprintf(fp, %s\n, p-tel.home_tel);
fprintf(fp, %s, p-tel.cell_tel);
i++;

if((i+1)!=save)
fputs(\n\n, fp);// 마지막 줄만 \n입력 안함
// → 이로써 파일입력받을시 마지막 번호정보가
// 반복 되던문제 해결
}
for(; p!=NULL ; p=p-link)
{
free(p-name);
free(p-address);
free(p-tel.home_tel);
free(p-tel.cell_tel);
//동적할당 때문에 받았던 공간을 다시 반납
}
fclose(fp);
exit(1);
}
/* 파일 입력 함수 */
void input_f()
{
int i=0;
char temp[100]={0};
struct user* t;
t=(struct user*)malloc(sizeof(struct user));
head=t;
fp=fopen(telbook.txt,r);
if(fp==NULL)
{
printf(파일 개방 오류!\n\n);
}

else
{
while(!feof(fp))
{
fscanf(fp,%s,temp);

if(strlen(temp)==0)// 처음 맨 첫 줄 입력 받을때
break;// 파일이 빈문서인지 확인!

head-name = (char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-name, temp);

fscanf(fp,%s,temp);
head-address = (char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-address, temp);

fscanf(fp,%s,temp);
head-tel.home_tel = (char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-tel.home_tel, temp);

fscanf(fp,%s,temp);
head-tel.cell_tel = (char*)malloc(sizeof(char)*strlen(temp)+1);
strcpy(head-tel.cell_tel, temp);

i++;
head=t;
head-link=t;
t-link=NULL;
}
}
save=i;// save값은 i값으로 초기화
}

신청하기





COMMENT

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

번호 제 목 글쓴이 날짜
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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