C语言:读TXT 模拟键盘打字输出

//#include<ctype.h>
#include<stdio.h>
#include <windows.h>
//#include "string.h"
//#include <locale.h>
//#include "stdlib.h"
//读TXT文件,模拟键盘输出,100个字符后清屏再继续输出 (41 93换行)
/*
WORD在windows.h中定义,等同于unsigned short,使用低4位表示文字(前景)颜色,高4位表示文字背景颜色,所以它的取值为xx。x为一位16进制数,即0~F都可以使用,可以随意组合。

0~F 分别代表的颜色如下:

0 = 黑色    8 = 灰色    1 = 淡蓝      9 = 蓝色
2 = 淡绿    A = 绿色    3 = 湖蓝      B = 淡浅绿  
C = 红色    4 = 淡红    5 = 紫色      D = 淡紫  
6 = 黄色    E = 淡黄    7 = 白色      F = 亮白
将背景设置为淡绿色,文字设置为红色:0X2C
*/
int main()
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出句柄
       FILE *p;
    char file[50];
    //scanf("%80s", file);
    p = fopen("test.txt", "r");
    int i = 0,j,m=0;
    int aa=0;
    char a[100];
    system("cls");
    while ((a[i] = fgetc(p)) != EOF)
        {
            //printf("%d %d\n",a[i],i);
            if (a[i]>=0)//汉字编码按字节读取都是负数,遇到非负数则强制加'\0',防止后的字符乱码 
            {
                i++;
                a[i] = '\0';
            }
            i++;
            if (i%100==0)
                {
                    if (m%3==0)
                        SetConsoleTextAttribute(hOut,0xC);
                    else if (m%3==1)
                        SetConsoleTextAttribute(hOut,0xf);
                    else 
                        SetConsoleTextAttribute(hOut,0x9);
                    m++;
                    //a[i] = '\0';
                    for(j = 0; j <= i - 1; j++)
                        {
                            printf("%c", a[j]);
                            
                            Sleep(10);
                            }
                    i=0;
                    printf("\7");
                system("cls");
            }
           
        }
        //下面的代码是显示最后不足100个对应字符 
         if (fgetc(p) == EOF)
            {
                //a[i] = '\0';
                //printf("%d\n",i);
                for(j = 0; j <= i - 1; j++)
                        {
                            printf("%c", a[j]);
                            
                            Sleep(100);
                            }
                    //i=0;
                    //printf("\7");
            }

    //puts(a);
    //printf("\n\n");
    SetConsoleTextAttribute(hOut,  FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    system("pause");
    return 0;

}

 

posted @ 2021-04-05 21:41  myrj  阅读(551)  评论(0编辑  收藏  举报