将char数组从左向右移动

时间:2016-06-07 14:08:00

标签: 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;
}

1 个答案:

答案 0 :(得分: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