指向字符转换的指针不兼容

时间:2016-11-22 16:31:28

标签: c

我正在编写一个程序,将卡片值写入52点字符多维数组。这个程序是一个测试数组,我将在稍后将其作为函数写入主程序 在程序中,我通过0通过51初始化for循环计数。我使用由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";

        }

2 个答案:

答案 0 :(得分: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 **/

        }
     }
}

答案 1 :(得分:0)

您应该#include <string.h>并执行以下操作:

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

等。另请注意,CardValue[i];根本没有效果。你也应该删除CardValue[i][6]=i;,我真的不知道你的意思,但肯定不应该在那里。