c - 从左到右移动字符数组

标签 c arrays

大家好,我正在尝试编写一个可以从左向右移动的笑脸。我设法对笑脸进行编码并打印出来。但我无法对其进行编码,使其可以从左向右移动。

到目前为止,这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int charprint(char x[][8], int X, int Y)
{
   for (int i = 0 ; i<X ; i++)
    {
        for (int j = 0; j<Y; j++ )
        {
            if( x[i][j]== '1')
            {
                printf(" ");
        }
        else
        {
            printf("%c", 219);
          }

       }
       printf("\n");
   }

}
int main()
{
    char bitmap [8][8] =
    {
        {'1', 'X', 'X', '1', '1', 'X', 'X','1'},
        {'1', 'X', 'X', '1', '1', 'X', 'X','1'},
        {'1', '1', '1', '1', '1', '1', '1','1'},
        {'X', '1', '1', '1', '1', '1', '1','X'},
        {'1', 'X', '1', '1', '1', '1', 'X','1'},
        {'1', '1', 'X', 'X', 'X', 'X', '1','1'},
        {'1', '1', '1', '1', '1', '1', '1','1'},
        {'1', '1', '1', '1', '1', '1', '1','1'},
    };
    charprint(bitmap, 8, 8);
    return 0;
}

最佳答案

你必须考虑“移动并在移动后填充空白”和“环绕移动”之间的区别。

for each line:
  temp = wrap ? (moveleft() ? line[0] : line[7]) : '1'
  memmove(line + moveleft() ? 0 : 1, line + moveleft() ? 1 : 0, 7)
  line[moveleft() ? 7 : 0] = temp

关于c - 从左到右移动字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681694/

相关文章:

ruby - 使用包含在另外两个数组中的信息创建一个数组

arrays - 无法为具有记录数组的对象赋值

c++ - 如何获取过滤器驱动程序中当前进程镜像文件的全名?

C语言: How to use memset to reset dynamic 2d array?

c - 如何将参数传递给函数指针

c - 将 printf 重定向到串行端口

C++ 数组和大小

javascript - 如何获取数组中元素的所有可能组合,包括顺序和长度

c - 算术加法的 MISRA C 合规性

javascript - 如何使用base64转换所有数组/对象