Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу - C (СИ)
Формулировка задачи:
Всем доброго времени суток.
Помогите найти ошибку. Ни на что не ругается, просто выдает ошибку.
"Необработанное исключение по адресу 0x6C78ED6C (msvcr110d.dll) в ConsoleApplication1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC."
Не понятно почему ругается вообще, ибо код писал сам, и потом сверял по учебнику П.Дейтела. В итоге уже все переписал слово в слово как в книге и все равно ошибка.
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
struct card
{
char*face;
char*suit;
};
typedef struct card Card;
void fillDeck(Card*, char *[], char *[]);
void fillDeck(Card *wDeck, char *wface[], char *wsuit[])
{
int i;
for(i=0;i<52;i++)
wDeck[i].face=wface[i%13];
wDeck[i].suit=wsuit[i/13];
}
void shuffleDeck(Card*);
void shuffleDeck(Card *wDeck)
{
Card buf;
int i,j;
for(i=0;i<52;i++)
j=rand()%52;
buf=wDeck[i];
wDeck[i]=wDeck[j];
wDeck[j]=buf;
}
void dealDeck(Card*);
void dealDeck(Card *wDeck)
{
int i;
for(i=0;i<52;i++)
{
printf("%d",i);
printf("%s of %s%c",wDeck[i].face, wDeck[i].suit,
(i+1)%2 ? '\t' : '\n');
}
}
int main()
{
srand((unsigned)time(NULL));
Card Deck[52];
char *face[]={"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine","Jack" "Queen", "King"};
char *suit[]={"Spades", "Diamonds", "Hearts", "Clubs"};
fillDeck(Deck, face, suit);
shuffleDeck(Deck);
dealDeck(Deck);
_getch();
return 0;
}Решение задачи: «Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу»
textual
Листинг программы
printf("%-4c of %6c",wDeck[i].face, wDeck[i].suit,
(i+1)%2 ? '\t' : '\n');
Объяснение кода листинга программы
В данном коде выполняется тасовка колоды карт.
printf— функция вывода информации на экран.%-4c— форматный спецификатор для вывода 1 символа с выравниванием по левому краю.%6c— форматный спецификатор для вывода 6 символов.wDeck[i].face— переменная, содержащая информацию о лице карты (туз, король, дама, валет).wDeck[i].suit— переменная, содержащая информацию о масти карты (червы, бубны, трефы, пики).(i+1)%2 ? '\t' : '\n'— условное выражение, определяющее символ для вывода: табуляция (\t) или перевод строки (\n) в зависимости от остатка от деления(i+1)на 2.