나는 블랙 잭 시뮬레이션을 만들어야하는 프로젝트를하고 있습니다. 그래서 저는 갑판과 무승부 기능을 만드는 것으로 시작했습니다. C에서 문자열이 없기 때문에 두 개의 포인터 배열을 만들어 사용자 지정 문자열 배열로 사용했습니다. 문제는 카드를 인쇄하여 가치와 소송을 볼 때 처음 예상 한 것을 인쇄 할 때뿐입니다. 두 번째는 엉망입니다. 누군가 나에게 이것을 설명 할 수 있습니까? 여기 내 코드가C가 문자열을 두 번 인쇄 할 수 없습니다
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char* suit[] = {"Diamonds", "Hearts", "Spades", "Clubs"};
char* facevalue[] = { "Seven", "Eight", "Nine", "Ten", "Jack","Queen", "King", "Ace"};
char* drawCard()
{
char* card[50];
int cardNumber=rand()%8;
int cardColor=rand()%4;
strcpy(card,facevalue[cardNumber]);
char of[]=" of ";
char* xrwma =suit[cardColor];
strncat(card,of,5);
strncat(card,xrwma,8);
return card;
}
int main()
{
srand(time(NULL));
char* c=drawCard();
puts(c);
puts(c);
return 0;
}
Thx 메이트, 작동했습니다 –
또한 어떤 솔루션이 바람직합니까?'drawCard()'에 대한 포인터를 전달하거나 f.e.malloc을 사용합니까? 코드를보다 깨끗하게하기 위해서. Thx –