Программа тасовки колоды карт: Нарушение прав доступа при чтении по адресу - 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');

Объяснение кода листинга программы

В данном коде выполняется тасовка колоды карт.

  1. printf — функция вывода информации на экран.
  2. %-4c — форматный спецификатор для вывода 1 символа с выравниванием по левому краю.
  3. %6c — форматный спецификатор для вывода 6 символов.
  4. wDeck[i].face — переменная, содержащая информацию о лице карты (туз, король, дама, валет).
  5. wDeck[i].suit — переменная, содержащая информацию о масти карты (червы, бубны, трефы, пики).
  6. (i+1)%2 ? '\t' : '\n' — условное выражение, определяющее символ для вывода: табуляция (\t) или перевод строки (\n) в зависимости от остатка от деления (i+1) на 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы