If you are under no pressure to do this particular task, you may want to get a book or find a tutorial online and learn more about function arguments and processing arrays with loops.

For example, the deck should be an array of ints that is actually shuffled, which obivates the need to test for duplicate cards.
Code:
```#define VALUE(card) ((card) % 13)  // Values 0 to 12 (real value
//   is VALUE() + 1
#define SUIT(card) ((card) / 4)    // Suits 0 to 3

void deck_init (int *deck)
{
srand (time (0));                 // init rand()
for (int i = 0; i < 52; ++i)      // fill deck with 0 to 51
deck[i] = i;
}

void deck_shuffle (int *deck)
{
for (int i = 51; i > 1; --i)      // for each card in the deck
{
int r = rand() % (i + 1);     // choose a random position
int temp = deck[i];           // swap the cards
deck[i] = deck[r];
deck[r] = temp;
}
}```
In analyzing the hands, you would use arrays to count the values and suits:
Code:
```int value[14];
int suit[4];

zero (value, 13);
zero (suit, 4);

for (int i = 0; i < CardsInHand; ++i)
{
++value[VALUE(hand[i])];
++suit[SUIT(hand[i])];
}```
You can then process the value and suit arrays to determine if the hand is a straight or flush or whatever.