Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д