PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/11/27 22:38:06
Name AriENai
Subject C언어 초보가 포인터와 관련된 질문 드립니다
struct player {
        card pcard[7];
        enumrank rank;
        int *top;
};
typedef struct player player;

int jokbo(card *, int, int *);
void printresult(player *, int);

int main(void)
{
        player players[MAX_PLAYER];
                
        for (i = 0; i < cnt; i++)
        {
                players[i].rank = jokbo(players[i].pcard, cnt, players[i].top);
        }
        printresult(players, cnt);
}

int jokbo(card *pcard, int cnt, int *top)
{
        card *y = pcard;
        int i;
        int face_cnt[13] = {0};
        int suit_cnt[4] = {0};


        for (i = 0; i < 7; i++)
        {
                face_cnt[(y + i) -> face]++;
                suit_cnt[(y + i) -> suit]++;
        }
        for (i = 0; i < 13; i++)
                switch (face_cnt[i])
                {
                        case 2 :
                                pair_cnt++;
                                *top = i;
                                break;
        ......
}

void printresult(player *players, int cnt)
{
        ......
}

학교에서 과제로 포커 프로그램을 만들고 있는데요.. 거의 다 된거 같은데..
마지막 순위를 매기는 과정에서 난관에 부딪혔네요..

jokbo 함수에서 메인함수의 players.top 의 값을 변경하고, 이를 printresult 함수에서 사용하고 싶습니다..
근데 어째서 인지 위와 같이 코드를 작성하여 컴파일 하면.. 실행시키면 응용프로그램 오류가 뜨더군요..

무엇이 문제이고, 어떻게 해결할 수 있을까요??

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
레버딘
09/11/27 22:52
수정 아이콘
*top = i;
포인터에 주소값을 대입하셔야 할듯...
09/11/27 23:05
수정 아이콘
레버딘님// 주소값을 대입해 버리면 지역 변수인 i는 jokbo()가 끝나면서 없어지는 것 아닌가요?
즉, printresult()에서 사용이 불가능한게 아닌지요..?

지구사랑님// struct player player; 가 옳지 않다는 말씀이신지요...?
card의 정의는 윗부분에 있구요.. 질문에 필요하다고 생각 되는 내용만 간추려서 올렸습니다.
09/11/27 23:14
수정 아이콘
한 단계 한 단계 코드가 실행될 때마다 printf문을 넣어주면서(예를 들면, for문 하나 끝나고 phase 1 end 와 같은 메시지를 출력하게 한다거나) 어디에서 그런 에러가 나면서 프로그램이 멈추는 지 찾아보세요.
Je ne sais quoi
09/11/27 23:39
수정 아이콘
최대한 비슷하게 만들어봤습니다. 코드 보시면 뭐가 잘못됐는지 아실 수 있을꺼예요~

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

#define MAX_PLAYER_NUM 10
#define MAX_CARD_NUM 7

struct player

int pcard[MAX_CARD_NUM];
int* top;
;
typedef struct player player;

void jokbo(int *, int, int *);
void printresult(player *);

int main(void)

int i;
player players[MAX_PLAYER_NUM];

for ( i = 0; i < MAX_PLAYER_NUM; i++ )
{
players[i].top = (int*)malloc(sizeof(int));
jokbo(players[i].pcard, i * 10, players[i].top);

printresult(players);
for ( i = 0; i < MAX_PLAYER_NUM; i++ )

free(players[i].top);


return 0;
}

void jokbo(int* pcard, int num, int* top)

int i;
for ( i = 0; i < MAX_CARD_NUM; ++i )
{
*(pcard + i) = (num + 1) * 10;

*top = num * 999;
}

void printresult(player* p_pstP)

int i, j;
for ( i = 0; i < MAX_PLAYER_NUM; ++i )
{
for ( j = 1; j < MAX_CARD_NUM; ++j )
{
printf("%d\t", (p_pstP + i)->pcard[j]);

printf("top: %d\n", *((p_pstP + i)->top));
}
printf("--------------------------\n");
}
09/11/27 23:52
수정 아이콘
Je ne sais quoi님//
지역변수(스택영역 이던가요?)를 malloc으로 힙 영역(?)으로 잡아서 함수가 끝나도 날아가지 않게 한건가요??
코드를 보고 수정하니 잘 되네요. 감사합니다 (_ _)
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
68747 훈련소 들어가때 필요한 물품좀 알려주세요.. [6] 뜨거운눈물2519 09/11/28 2519
68746 아이돌은 돈을 얼마나 벌까요? [10] 이슬라나3158 09/11/28 3158
68745 엠비씨게임 프로리그 bgm 질문 [1] StoRm``1716 09/11/28 1716
68742 경제관련 커뮤니티 있나요?????????? [1] 도주하는킹콩2130 09/11/28 2130
68741 안녕하세요. 포토샵 작업관련해서 급하게 요청좀 드리겠습니다. [8] 이준태1692 09/11/28 1692
68739 tv 살려는데요.. [1] 아레스1955 09/11/28 1955
68736 ctrl+c , ctrl+v 가 안됩니다 [8] Liam2871 09/11/28 2871
68734 psp연결중 usb연결불량문제 포포탄2786 09/11/28 2786
68732 스타크래프트 정품 질문입니다 [5] 김치찌개2597 09/11/28 2597
68731 시디 제작 관련하여 질문드립니다. [2] 이준태2017 09/11/28 2017
68729 지금 열나고 몸살때문에 죽을것 같습니다-_-; [4] Settleprovider2383 09/11/28 2383
68727 여자인 친구(여자사람?) 생일선물 어떤게 좋은가요? [9] 살콤한그대2695 09/11/28 2695
68724 디시에서 쓰는 "잉여" 라는 말의 의미를 알고 싶습니다. [14] o파쿠만사o2345 09/11/28 2345
68723 핸드폰 SKT에서 KT로 옮길지말지 생각중인데요..도움 좀 주세요~~ [9] 토레스1787 09/11/28 1787
68722 핸드폰 부품관련 질문입니다. [3] Alexandre2019 09/11/28 2019
68721 선박 off-set table 볼줄 아시는분 있으신가요?? 이디어트2870 09/11/28 2870
68720 형이 동생을 너무 좋아하면? 과 같은 넌센스 류의 퀴즈 뭐가 있을까요? [14] 선미남편3477 09/11/27 3477
68719 [오크유저] 저도 워크 질문이요 [4] 불타는눈동자1649 09/11/27 1649
68718 크리스마스날에 즐겁게 볼 뮤지컬이나 공연 추천좀 부탁드립니다. [3] Afterglow2212 09/11/27 2212
68717 정보처리기사와 전자계산기조직응용기사에 대하여 [3] 허세판2879 09/11/27 2879
68716 테란 입구막기 질문입니다~ [8] ??2589 09/11/27 2589
68715 정장 바지 수선에 관한 질문입니다. [2] 열정적으로2182 09/11/27 2182
68714 C언어 초보가 포인터와 관련된 질문 드립니다 [5] AriENai2153 09/11/27 2153
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로