如何在数组中移动字符
How to move a char in an Array?
我要做的是在1D或2D数组中使用箭头键移动字符。我已经用"a"初始化了数组,这意味着它从索引#0开始,但当我交换时,它并没有给出预期的输出,而是给了我类似的东西:
a a a a a a a a a
它应该像这个
a
这是我的代码
#include<iostream>
#include<Windows.h>
#include<conio.h>
#include<fstream>
#define RIGHT 77
#define LEFT 75
#define UP 72
#define DOWN 80
#define ESC 27
using namespace std;
void gotoxy(int, int);
void swap(char*,char*);
char arr[1024] = { "a"};
char *line_ptr = (char*)arr[0];
char *line_ptr2d =(char*)arr[0];
void main()
{
for (int i = 1; i < 1024; i++)
{
arr[i] = ' ';
}
int x = 1;
int y = 1;
int ch;
do
{
//system("cls");
int i = 0;
gotoxy(x, y);
ch = _getch();
if (ch == 224)
{
ch = _getch();
switch (ch)
{
case LEFT:
x -= 1;
line_ptr--;
swap(&arr[i], &arr[i + 1]);
//arr[i] = ' ';
cout << arr[i];
break;
case RIGHT:
x += 1;
swap(&arr[i], &arr[i + 1]);
if (arr[i-1] != NULL)
{
arr[i - 1] = ' ';
}
cout << arr[i+1];
break;
case UP:
y--;
break;
case DOWN:
y++;
break;
}
}
i++;
} while (1);
}
void gotoxy(int x, int y)
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
_COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(hConsole, pos);
}
void swap(char *x, char *y)
{
char temp = *x;
*x = *y;
*y = temp;
}
我将严格回答您的问题,然后向您指出代码中的其他一些问题。
您当前的问题是您打印的数据不正确。例如,当您向右"移动"时,在当前位置打印字符'a'
,然后执行gotoxy(x,y)
。而您需要将' '
放在当前位置,然后使用具有更新值的gotoxy(x,y)
并放置'a'
。
-
其他一些问题:
1.
char *line_ptr = (char*)arr[0];
char *line_ptr2d =(char*)arr[0];
什么?为什么?你的意思是:
char *line_ptr = arr;
char *line_ptr2d = arr;
2.
你不会检查是否在你的数组限制内。
3.
无论向左还是向右移动,您都会将索引i
提前。(在这种情况下,您可能应该使用现有的x
索引)。
4.
char arr[1024] = { "a"}; // You probably meant char arr[1024] = {'a'};
在数组中交换两个字符后,只显示新的一个
swap(&arr[i], &arr[i + 1]);
cout << arr[i];
您还必须在i + 1
位置上写一个空格,使其消失。
相关文章:
- 移动二维数组中的字符
- 碱基对映射 - 将 argv[i] 移动到整数或字符作为输入
- 如何找到通过仅移动相邻字符创建的字符串的排列?-C++
- 将原始指针移动到已创建函数中的下一个字符
- 我正在尝试在字符数组的中间添加一个空格.不确定如何正确移动它
- 位移动,未签名的字符
- 如何在不删除任何字符的情况下将字符从字符串中的某个位置移动到其最前面
- 移动字符数组的值以注册 x86 内联程序集
- 如何通过将特定的字符组合移动到空数组来"delete"单词和元音?
- 将 std::string 中的文本块向左移动 X 个字符
- 矩阵中字符的随机移动
- 如何在 c++ 中在屏幕上移动文本字符
- C++找到特殊的字符并移动到字符串的末尾
- 在 c# 中将 int 添加到字符以将其 ascii 值向上移动(就像在 c++ 中一样)
- 在字符指针中用内存移动替换字符
- 有没有一种方法可以将无符号字符块移动到 STL 向量中,而不是一次移动 1 个无符号字符
- C++字符数组正确移动null终止符
- UE4.9:移动字符(未设置位置)
- 如何在数组中移动字符
- 如何在c++中移动字符数组的某些位置