向char*[]添加字符时出现问题
Trouble with adding chars to char*[]
我正在尝试为class制作一个快速的TicTacToe游戏,但我为X和O创建的两个字符有问题。有些代码必须用于赋值,所以我不能只有一个标准数组。每次我把它们放进char*[]中时,它们都会显示出在它们之后创建的任何char。
以下是我正在使用的部分代码。
char *spots[] = {"1","2","3","4","5","6","7","8","9"};
char player1 = 'X';
char player2 = 'O';
要打印板的第一行,我们需要使用以下类别:
cout << spots[0] << " | " << spots[1] << " | " << spots[2] << endl;
它打印1|2|3
以下是我如何将值分配给数组:
spots[1]= &player1;
因此,如果我在板上选择2作为player1,它将打印:
1|XO|3
然后我选择3作为player2:
1|XO|O
如果我添加第三个字符:
char player1 = 'X';
char player2 = 'O';
char test = 'T';
然后打印以下内容:
1|XOT|3
1|xod|OT
我觉得这与字符位置有关,但我无法修复它。
您可以使用:
char *spots[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
char *player1 = "X";
char *player2 = "O";
然后分配:
spots[i] = player1;
类型是一致的:spots
是char *
的数组,将char *
字符串分配给数组中的一个条目是有意义的——它是指向所分配的以null结尾的字符串的指针,与spots
中的其他值相同。
您可能需要考虑:
char *player[] = { "?", "X", "O" };
然后你可以使用:
spots[i] = player[j];
当然,"?"
允许您为玩家使用编码1
和2
。
使用您的代码,您将单个字符(而不是字符串)的地址分配给点,然后打印代码读取,直到找到null,从而导致混乱。
当您调用时
std::cout << spots[1]
您正在打印一个null终止的字符串。
通过进行
spots[1]= &player1;
您没有显式设置null终止符,因为player1
属于char
类型。
你应该做以下
char const* spots [] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
char const* player1 = "X";
char const* player2 = "O";
spots[1] = player1;
相关文章:
- 从矢量C++读取字符时出现问题
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- C++理解计算字符变量的问题
- 将十六进制值设置为用于填充的字符变量时出现问题
- 编写 cin.get() 以接收字符数组时出现问题
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 字符 * 未从重载运算符或内存管理问题正确返回
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 我在使用字符的函数时遇到了一些问题
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- 将 c++ 字符串转换为常量字符 * 时出现问题
- C++程序,将整数输入转换为字符的问题
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- C++ 初级面试问题:仅使用字符指针压缩字符序列的功能
- 通过比较字符设置字符串时出现问题
- 我的编辑距离递归代码中的字符类型有问题
- 获取“boost::文件系统::p ath”字符指针时出现问题
- C Unicode UTF-8解码字符的问题
- 类型转换问题:字符数组的元素转换为整数变量