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