수다닷컴

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

구조체 배열을 가르킬수있는 포인터 배열은 어떻게 선언하나요?

두동

2023.04.01

질문 제목 : 구조체 배열을 가르킬수있는 포인터 배열은 어떻게 선언??포인터 배열이 구조체 배열의 주소값을 가르키게 하여
입력받은 숫자를 이용하여 구조체 배열의 값을 바꾸기 위함입니다.질문 내용 :

/*c99*/
/*재미 연습*/
#include stdio.h
#include stdlib.h
#include string.h
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main_title(void); //첫번째 선택문 (책을 새로넣는다 (0) 책을 검색한다 (1) 책을 대출한다 (2) 반납 (3) 종료(4) )
void book_edit(void); //책을 저장할 함수
void book_search(void); //책을 검색할 함수
void book_loans(void); //책을 대출할 함수
void book_return(void); //책을 반납할 함수
void book_print(int i,int k); //검색한 책을 모니터에 출력
void loans_initialization (void); //대출값을 초기화
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct book_main
{
char title[50]; //책의 이름
char author[30]; //책의 저자
char publisher[30]; //책의 출판사
int loans; // 대출 여부
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct book_main book[100]; //책이 들어갈 구조체 변수 //////////////★
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main (void)
{
int cnt = 0;
printf(|-----------------------------------------------------------------------------|\n);
printf(| |\n);
printf(| 도서 관리 프로그램 |\n);
printf(| |\n);
printf(| 주의 (맞지않은 다른 버튼을 누르실경우 어떻게 될지 저도 모릅니다.) |\n);
printf(| |\n);
printf(| |\n);
printf(| 책임감 없는 by.옴니아 |\n);
printf(|-----------------------------------------------------------------------------|\n);
loans_initialization ();
while(1)
{
puts();
cnt = main_title();

if(cnt == 0)
{
book_edit();
}
else if(cnt == 1)
{
book_search();
}
else if(cnt == 2)
{
book_loans();
}
else if(cnt == 3)
{
book_return();
}
else break;
}

return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main_title(void)
{
int i = 0;
int j = 0;
do
{
j++;
printf(책을 넣는다 (0) 책을 검색한다 (1) 대출한다 (2) 반납한다 (3) 종료(4) = );
scanf(%d,&i);
if(i4 || i0)
{
printf(잘못 입력하셨습니다.\n);
j=0;
}
}while(j==0);
puts();
return i;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void book_edit(void)
{
int i;
int bok = 0;
static int kook = 0;
printf(책을 몆권 넣으시겠습니까? = );
scanf(%d,&bok);
for(i=0;ibok;i++)
{
printf(%d 번째 책의 이름 = ,kook+1);
scanf(%s,book[kook].title);
printf(%d 번째 책의 저자 = ,kook+1);
scanf(%s,book[kook].author);
printf(%d 번째 책의 출판사 = ,kook+1);
scanf(%s,book[kook].publisher);
puts();
kook++;
}

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void book_search(void)
{
int i,k;
int g = 1;
int serch = 0;
int koko = 0;
char namid[30];
k=0;
printf(어느 정보를 이용해서 찾으시겠습니까? \n);
while(1)
{
printf(책의 이름(0) 책의 저자(1) 책의 출판사(2) = );
scanf(%d,&serch);
if(serch=3 && serch=0) break;
printf(잘못 입력하셨습니다.\n);
}
if(serch==0) //책의 이름
{
printf(찾고자 하는 책의 제목을 입력해주세요 = );
scanf(%s,namid);
for(i=0;i100;i++)
{
g=strncmp(book[i].title,namid,2);
if(g==0 && book[i].loans==0)
{
k++;
book_print(i,k);
puts();
koko++;
}
}
if(koko==0) printf(정보가 없습니다\n);
}
else if(serch==1) //책의 저자
{
printf(찾고자 하는 책의 저자을 입력해주세요 = );
scanf(%s,namid);
for(i=0;i100;i++)
{
g=strncmp(book[i].author,namid,2);
if(g==0 && book[i].loans==0)
{
k++;
book_print(i,k);
puts();
koko++;
}
}
if(koko==0) printf(정보가 없습니다\n);
}
else if(serch==2) //책의 출판사
{
printf(찾고자 하는 책의 출판사를 입력해주세요 = );
scanf(%s,namid);
for(i=0;i100;i++)
{
g=strncmp(book[i].publisher,namid,2);
if(g==0 && book[i].loans==0)
{
k++;
book_print(i,k);
puts();
koko++;
}
}
if(koko==0) printf(정보가 없습니다\n);
}

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void book_print(int i,int k)
{
printf(%d. 제목:%s, 저자:%s, 출판사:%s,k,book[i].title,book[i].author,book[i].publisher);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void book_loans(void)
{
char da[30];
int i,j = 0;
int k = 0;
int koko = 0;
int g;
printf(대출하고자 하는 책의 제목을 입력해주세요 = );
scanf(%s,da);
for(i=0;i100;i++)
{
g=strcmp(book[i].title,da);
if(g==0 && book[i].loans==0)
{
k++;
book_print(i,k);
printf( 을[를] 대출하시겠습니까?\n yes(1)/no(0) = );
scanf(%d,&j);
if(j==1)
{
printf(대출 하셨습니다. \n);
book[i].loans = 1;
}
koko++;
}
j=0;
}
if(koko==0) printf(정보가 없습니다\n);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loans_initialization (void)
{
int i;
for(i=0;i100;i++)
{
book[i].loans = 0;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void book_return(void)
{
int i;
int cnt = 0;
int k = 0;
struct book_main *ptr[100]; /////////////★
printf(어떻게 반납하시겠습니까?\n);
printf(전부(1),일부(0) = );
scanf(%d,&cnt);
if(cnt==1)
{
loans_initialization ();
}
else
{
for(i=0;i100;i++)
{
if(book[i].loans == 1)
{
k++;
book_print(i,k);
puts();
(*ptr)[k]=book[i]; /////////////★
}
}
if(k==0)
{
printf(정보가 없습니다\n);
}
else
{
while(1)
{
printf(반납하고자 하는 책번호를 말하세요 그만 반납(0) = );
scanf(%d,&cnt);
if(cnt==0) break;
else (*ptr)[cnt].loans = 0; ///////////★
}
}
}
}

★ 친곳이 문제가 되는 부분인거 같은데요..
도무지 어떻게 하면 구조체 배열을 가르켜서 구조체 배열의 값을 바꿀지 모르겠네요

코드는 상당히 x같습니다..
그렇다고해서 다른 부분은 알려주시면 안되요..
다른 부분은 따로 수정을 가할예정이니
★친부분만 신경써주시길 부탁드립니다...

신청하기





COMMENT

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

  • 터전

    자체 해결했습니다.

번호 제 목 글쓴이 날짜
2698120 -연산자 가 먼지 좀 알려주세요 (1) 낮선검객 2025-06-14
2698091 길찾기문제 질문이요! 노을빛 2025-06-13
2698060 while 문에 대한 질문입니다. (9) 물고기자리 2025-06-13
2698012 2~9가아닌수 아놀드 2025-06-13
2697980 for에 gets함수를 넣으니까 왜 반복이 안되죠 ㅜ (2) 펴라 2025-06-12
2697952 2차배열과 함수문의^^; VanilLa 2025-06-12
2697924 다차원 배열 질문있습니다 두동 2025-06-12
2697893 정올 :: 기초다지기 a9007 배열7 (문제가 이상함 -_-) 흰두루 2025-06-12
2697862 Unable......... 지정된 파일을 찾을 수 없습니다!! (1) Creator 2025-06-11
2697761 그러니까여제말은... (2) 새론 2025-06-10
2697737 정올 문제좀 풀어보신분~ 레오 2025-06-10
2697709 rand함수 질문좀요! (6) 가막새 2025-06-10
2697683 C언어 변수뒤 표시가 이해안되는게 있습니다. 소미 2025-06-10
2697660 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) 움찬 2025-06-09
2697634 c언어로 감성사전 만들기! (1) 도란도란 2025-06-09
2697605 이 함수좀... agine 2025-06-09
2697574 배열 기본적인질문 (3) 민트향 2025-06-09
2697549 배열 초기화 (4) 나리 2025-06-08
2697465 수다님...^^ (2) 가론 2025-06-08
2697432 서버 만드는 함수에서 궁금한게있어요~ 파랑 2025-06-07
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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