2016-11-22 2 views
-2

Я пишу программу для записи значений карт в многомерный массив символов 52-точечного символа. Эта программа представляет собой один тестовый массив, который я буду записывать как функцию в основную программу позже.
В программе я инициализирую подсчет для цикла для 0 по 51. Я использую оператор switch, модулированный 13, чтобы присвоить значение карты точке массива. Тем не менее, я получаю указатель ошибки на целочисленное преобразование, также как мне записывать значения во второе пятно в массиве?Несовместимый указатель на преобразование символов

#include <stdio.h> 

int main() 
{ 
    char CardValue[52][6]; 
    int i; 

    for (i=0;i<52;i++) 
    { 
     CardValue[i][6]=i; 
CardValue[i]; 
     switch (i%13) 
     { 
      case '0': CardValue[i][6] = "ACE"; 
      break; 

      case '1': CardValue[i][6] = "2"; 
      break; 

      case '2': CardValue[i][6] = "3"; 
      break; 

      case '3': CardValue[i][6] = "4"; 
      break; 

      case '4': CardValue[i][6] = "5"; 
      break; 

      case '5': CardValue[i][6] = "6"; 
      break;   

      case '6': CardValue[i][6] = "7"; 
      break; 

      case '7': CardValue[i][6] = "8"; 
      break; 

      case '8': CardValue[i][6] = "9"; 
      break; 

      case '9': CardValue[i][6] = "10"; 
      break; 

      case '10': CardValue[i][6] = "JACK"; 
      break; 

      case '11': CardValue[i][6] = "QUEEN"; 
      break; 

      case '12': CardValue[i][6] = "KING"; 

     } 
+0

'CardValue [I] [6]' referes только один 'char' (тип' char'). '' ACE "' тип 'char *'. Более того, 'CardValue [i] [6]' ссылается на char вне вашего массива (вы набираете 'char CardValue [52] [6];' поэтому индексы находятся между [0-51] [0-5] – Fefux

+0

Что делает строка 11 делает, если что-нибудь? 'CardValue [i];' Предыдущая строка имеет полу, поэтому я не думаю, что он должен что-либо делать. – Blacksilver

+0

Пожалуйста, перед публикацией в SO показать некоторые исследовательские усилия и подумать над проблемой поиска, люди здесь рад помочь, но приятно приложить некоторые усилия в вашей проблеме, прежде чем размещать вопрос. Кроме того, не забудьте правильно отложить свой код. – elmazzun

ответ

0

Вы должны #include <string.h> и сделать что-то вроде этого:

case '0': strcpy(CardValue[i],"ACE");

и т.д. Также обратите внимание, что CardValue[i]; не имеет никакого эффекта. Вы также должны удалить CardValue[i][6]=i;, я действительно не знаю, что вы имели в виду, но этого наверняка не должно быть.

2

Вам нужно сделать strcpy и не назначать строковые литералы напрямую. Кроме того, использование массива неверно.

Код должен быть, как показано ниже:

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char CardValue[52][6]; 
    int i; 

    /* Not clear what you are trying in the below 2 lines. But, it'll not work :-) */ 
    /*CardValue[i][6]=i; 
    CardValue[i];*/  

    for (i=0;i<52;i++) 
    { 

     switch (i%13) 
     { 
      case '0': strcpy(CardValue[i],"ACE"); 
      break; 

      case '1': strcpy(CardValue[i],"2"); 
      break; 

      /** Do the same way for other case **/ 

     } 
    } 
} 
Смежные вопросы