文件中显示图形移动

在同路径下使用程序新建。txt文件,使像输出的图形运动。

我的头文件添加到了c库函数的路径下,然后在那里声明了所用的库函数。 

用到的库函数:

#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>

还需要添加一个 宏定义:

#define PRINT_ERR(msg) \
    do {               \
        perror(msg);   \
        return -1;     \
    } while (0)
#include <head.h>

int main(int argc, const char *argv[])
{
    int fd;

    int len = 40;
    while (1)
    {
        int i;
        int j = 10;
        if ((fd = open("try.txt", O_RDWR | O_CREAT | O_TRUNC, 0666)) == -1)
            PRINT_ERR("openfile error");
        while (--j)
        {
            for (i = 0; i < len-j; i++)
            {
                write(fd, " ", 1);
            }
            write(fd, "@<<<\n", 5);
        }
        sleep(1);
        if (i)
            len--;
        if (!(--len))
            len = 40;
        close(fd);
    }
    return 0;
}

在第一行与第二行之间循环动

#include <head.h>

int main(int argc, const char *argv[])
{
    int fd;
    int m = 4;
    int n = 4;
    int len = 20;
    int j = 20;
    int k = 23;
    while (1)
    {
        int i;
        if ((fd = open("try.txt", O_RDWR | O_CREAT | O_TRUNC, 0666)) == -1)
            PRINT_ERR("openfile error");
        if (!n)
        {
            m = 4;
            n = 4;
            len = 19;
            j = 20;
            k = 23;
        }
        for (i = 0; i < len; i++)
        {
            write(fd, " ", 1);
        }
        if (!j && n)
        {
            for (i = 0; i < k; i++)
            {
                write(fd, " ", 1);
            }
            k--;
            switch (--n)
            {
            case 3:
                write(fd, "@\n", 2);
                for (i = 0; i < 21; i++)
                {
                    write(fd, " ", 1);
                }
                write(fd, ">>>", 3);
                break;
            case 2:
                write(fd, "@<\n", 3);
                for (i = 0; i < 22; i++)
                {
                    write(fd, " ", 1);
                }
                write(fd, ">>", 2);
                break;
            case 1:
                write(fd, "@<<\n", 4);
                for (i = 0; i < 23; i++)
                {
                    write(fd, " ", 1);
                }
                write(fd, ">", 1);
                break;
            case 0:
                write(fd, "@<<<", 4);
                printf("%d\n%d\n",n,len);
                break;
            }
            i = 0;
        }
        if (!m && j)
        {
            write(fd, "\n", 1);
            for (int i = 0; i < 21 - j; i++)
            {
                write(fd, " ", 1);
            }
            j--;
            write(fd, ">>>@", 4);
        }
        if (!len && m)
        {
            switch (--m)
            {
            case 3:
                write(fd, "<<<\n@", 5);
                break;
            case 2:
                write(fd, "<<\n>@", 5);
                break;
            case 1:
                write(fd, "<\n>>@", 5);
                break;
            case 0:
                write(fd, "\n>>>@", 5);
                break;
            }
        }
        if (i)
        {
            len--;
            write(fd, "@<<<", 4);
        }
        sleep(1);
        close(fd);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值