notes/Deck of Cards with James-6xgevYHB.sh
#ifndef __CARD_H__

#define __CARD_H__


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


typedef enum {HEARTS, CLUBS, SPADES, DIMONDS} suit_t;


typedef struct card_s {
  suit_t suit;
  int value;
} *card_t;

typedef card_t deck[52];

card_t Make_Card(suit_t suit, int value)
{
  card_t tmp;
  if(value > 13 || value < 1){
    fprintf(stderr,"Value Must Be Between 1 and 13\n");
    exit(1);
  }
  tmp = (card_t)(malloc(sizeof(struct card_s)));
  tmp->suit = suit;
  tmp->value = value;
  return tmp;
}

void Print_Suit(FILE* fp, suit_t suit)
{
  if (suit == HEARTS) {
    fprintf(fp, "❤");
  } else if (suit == CLUBS) {
    fprintf(fp, "♣");
  } else if (suit == DIMONDS) {
    fprintf(fp, "♦");
  } else if (suit == SPADES) {
    fprintf(fp, "♠");
  } else {
    fprintf(fp, "NAN");
  }
}

void Print_Card(FILE* fp, card_t card)
{
  if(card->value == 1){
    fprintf(fp, " A");
  }
  else if(card->value == 11){
    fprintf(fp, " J");
  }
  else if(card->value == 12){
    fprintf(fp, " Q");
  }
  else if(card->value == 13){
    fprintf(fp, " K");
  }
  else if(card->value == 10){
    fprintf(fp, "10");
  }
  else{
    fprintf(fp, " %d", card->value);
  }

  Print_Suit(fp, card->suit);
  fprintf(fp, "\n");
}

void Create_Deck(deck mydeck)
{
  int i;
  for (i=0;i<13;i++){
    mydeck[i*4+0] = Make_Card(DIMONDS, i+1);
    mydeck[i*4+1] = Make_Card(CLUBS, i+1);
    mydeck[i*4+2] = Make_Card(SPADES, i+1);
    mydeck[i*4+3] = Make_Card(HEARTS, i+1);
  }


}

int main()
{
  int i;
  deck mydeck;
  Create_Deck(mydeck);

  srand(time(0));  

  for(i=0;i<5;i++){  
    int c = rand()%52;
    Print_Card(stdout, mydeck[c]);
  }
}



#endif

syntax highlighted by Code2HTML, v. 0.9.1