我正在尝试建立一个基本的文字棋类游戏。目前在每个阵列位置,我正在尝试输入一个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;
}
答案 0 :(得分:4)
你混淆了一个char *和char。你的ChessArray是一个由数组组成的数组。不是char *数组的数组。双引号中的字符串是char *。单引号中的单个字符是一个字符。 Strcpy使用char *而不是字符,并且它不能将数据复制到字符中。要么想让它成为char * ChessArray [] [],要么你想使用ChessArray [firstCounter] [secCounter] ='p'。
请注意,如果你使用char * ChessArray [] []版本,你必须在第一次将它传递给strcpy之前,使用malloc为每个索引保存每个char *的内存。