建国际象棋游戏?

时间:2017-03-05 21:12:14

标签: c arrays string char

我正在尝试建立一个基本的文字棋类游戏。目前在每个阵列位置,我正在尝试输入一个2个字符的单词。 P1是第一个玩家的棋子。它在incompatible pointer to integer conversion功能行上给出了strcpy错误。

我尝试使用ChessArray[firstCounter][secCounter] = 'P1';,但它不起作用并给我一个错误。

注意:我知道很多人会说使用其他语言来制作这个游戏更好,但我想练习我的C技能。

代码:

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

int main(int argc, const char * argv[]) {

    char ChessArray[8][8];
    for (int firstCounter = 0; firstCounter <= 7; firstCounter++)
    {
        for (int secCounter = 0; secCounter <= 7; secCounter++)
        {
            strcpy(ChessArray[firstCounter][secCounter],"p");
        }
    }
    printf(" |A |B |C |D |E |F |G |H |\n");
    for (int firstCounters = 0; firstCounters <= 7; firstCounters++)
    {
        printf("%i", firstCounters);
        for (int secCounters = 0; secCounters <= 7; secCounters++)
        {
            printf("| ");
            printf("%c",ChessArray[firstCounters][secCounters]);
        }
        printf("|");
        printf("%i",firstCounters);
        printf("\n");
    }
    printf(" |A |B |C |D |E |F |G |H |\n");
    return 0;
}

1 个答案:

答案 0 :(得分:4)

你混淆了一个char *和char。你的ChessArray是一个由数组组成的数组。不是char *数组的数组。双引号中的字符串是char *。单引号中的单个字符是一个字符。 Strcpy使用char *而不是字符,并且它不能将数据复制到字符中。要么想让它成为char * ChessArray [] [],要么你想使用ChessArray [firstCounter] [secCounter] ='p'。

请注意,如果你使用char * ChessArray [] []版本,你必须在第一次将它传递给strcpy之前,使用malloc为每个索引保存每个char *的内存。