Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356644
  • 博文数量: 53
  • 博客积分: 139
  • 博客等级: 入伍新兵
  • 技术积分: 589
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-27 01:55
个人简介

学习linux,学习编程。

文章分类

全部博文(53)

文章存档

2019年(1)

2018年(4)

2016年(4)

2014年(11)

2013年(33)

分类: C/C++

2013-12-06 01:49:41

     easy-type是一个简易的打字练习软件,它是用C语言编写的。

一,编写这个软件的原因:
  想在linux系统终端窗口下或者虚拟终端下使用中文打字练习软件,但是没有找到一个好用的,因此就编写了这个简易的
中文打字练习软件。

二,下面是这个软件的C语言源程序

该软件放在了CU论坛上了,下载网址是:

#include
#include
#include
#include
#define N 20

int type;    //用来判断字符是半角还是全角

/*    2013-12-6  version 1 .0   auther shencz2000

english.txt 文件是英文,里面都是半角英文字母和字符。
chinese.txt 文件中的文字都是汉字和全角标点符号。
mydrill.txt 文件中的文字都是汉字和全角标点符号。
这些文件每一行都不能超过80个半角字符或者40个全角字符。
将其中一个文件的文本按行读到数组中来,最多只能读取 N 行。*/

int main (void)
{
  int select_file (char filename[]);
  int type_drilling (char array[][150]);
  FILE * fp;
  char array[N][150], fname[20];
  int i=0,j;
  system ("clear");        //清理屏幕
  select_file (fname);
  if ((fp=fopen(fname,"r"))==NULL)
    {
    printf ("can't open file!\n");
    exit (0);
    }
  while (i   array[i][0]='\0';        //对序号为i的那一行进行处理,避免出现乱码
  type_drilling (array);
  fclose (fp);
  return 0;
}
 
int type_drilling (char array[][150])        //打字练习函数
{
  int right_words (char * p, char * string);
  int i=0,j=0,k=0,m,n,s=0,t;
  time_t start,stop;
  float time_used, speed, rightw=0;
  char * p, string[150]={"start drilling"};
  while ( i < N && strlen (array[i]) != 0)
  {
    p=array[i];
    j=0;
    while (j<3 && rightw<90 && strcmp(string, "quit")!=0)
    {
      printf ("  %s  ",p);
      s++;
      time (& start);
      //下面的两条语句是将输入保存到1维字符数组里
      for (k=0; (string[k] = getchar()) != '\n'; k++) ;
      string[k]='\0';
      time (& stop);
      time_used=difftime (stop, start);
      m=strlen(p)-1;        //该字符串包括换行符,因此字符串长度要减 1
      if (type >0)
        { k=k/3; m=m/3;}    //一个汉字的utf8编码是3个字节
      n=right_words(p,string);    //调用统计正确的字数的函数
      speed=60*k/(time_used+0.1);    // +0.1是为了避免出现分母太小的情况
      //printf ("the words:%d, right words:%d\n",m,n);
      if (m > 0) rightw=n*100/m;
      else rightw=100;
      printf ("  Speed:%5.0f, right ratio:%5.0f \n\n",speed,rightw);
      j++;
      s+=3;
    }
    if (s > 17)
    {
      s=0;
      system ("clear");        //执行清屏指令
      printf ("  speed:%5.0f, right ratio:%5.0f \n\n",speed,rightw);
    }
    rightw=0;
    if(i   }
  return 0;
}


int select_file (char filename[])        //选择哪一个文件
{
  int i,k;
  char array[3][20]={"english.txt","chinese.txt","mydrill.txt"};
  printf ("  Please input 1 , 2 or 3 to select a file for drilling.\n");
  for (i=0; i<3; i++)
  printf ("  %d file name is: %s\n",(i+1),array[i]);
  printf ("  ");
  scanf ("%d",&k);
  getchar();        //接收一个字符,在这里是接收一个换行符
  system ("clear");    //清理屏幕
  if (k<1 || k>3)
  {
    printf ("\n  The number is wrong, so the first file is used\n");
    k=1;
  }
  strncpy(filename,array[k-1],20);
  type=k-1;        // 0代表英文半角字符, >0代表中文全角字符.
  printf ("\n");
  return 0;
}


int right_words (char * p, char * string)        //统计打字正确的字数,对于英文来说则统计字符数
{
  int i,k=0,r,s,t=0;
  r=strlen(p);
  s=strlen(string);
  if (s>r) s=r;
  if (type==0)        //如果是英文半角字符
  {
    for (i=0; i       if (*p++ == *string++) k++;
  }
  else             //如果是中文全角字符
  {
    for (i=0; i     {
      if (*p++ == *string++) t++;
      if (t == 3) k++;
      if ((i+1)%3 == 0) t=0;
    }
  }    
  return k;
}

三,使用说明

  1,这个软件包括如下这几个文件:

  README.txt    这个软件的使用说明文件
  easy-type    可执行文件,使用如下命令生成的:
          gcc -o easy-type easy-teype.c
  easy-type.c    这个软件的C语言源文件
  english.txt    英文打字练习文本文件
  chinese.txt    中文打字练习文本文件
  mydrill.txt    中文打字练习文本文件
 
  2,下面3个文本文件,使用者可以编辑,但是有以下几点要求:
  (1),english.txt文件是英文,里面都是半角英文字母和字符。
       chinese.txt文件中的文字都是汉字和全角标点符号。
       mydrill.txt文件中的文字都是汉字和全角标点符号。
  (2),这些文件每一行都不能超过80个半角字符或者40个全角字符。
  (3),将其中一个文件的文本按行读入,最多只能读取 20行。

  3,软件的文件使用tar进行了打包。(但是在这个博客上不能发附件,因此没有上传压缩文件。)
     因此,先下载压缩文件easy-type.tar.gz,接着在某一个目录下使用如下命令进行解压缩:
     tar -zxv -f easy-type.tar.gz
     解压缩以后,会看到一个easy-type子目录,这个目录里有上面所说的几个文件。
     easy-type是在centos 5.x环境下编译生成的,如果你也是使用centos 5.x,
     你可以试一下这个可执行文件。
     如果你使用其它的linux操作系统或者unix操作系统,请你自行编译,编译命令如
     前面所示。如果你的操作系统上没有gcc,你需要先安装它。如果你的操作系统带
     有yum程序,你可以使用下面的命令来安装gcc:sudo yum install gcc 。如果这
     种方法不行,你可以使用root用户标识来安装:su - ; yum install gcc 。
     这个C语言源程序,还没有在window下进行编译过。因此请不要直接在window
     下使用它。

  4,先这个软件的目录下,接着可以在命令行下使用如下命令这运行这个程序:
     ./easy-type。程序开始会提示你练习那一个文本文件,你可以通过输入
     1,或者2,或者3来进行选择。在练习过程中,如果你想退出,可以在一个新行
     下输入:quit四个英文字母,接着按回车。

四,这个软件的已知的问题:
    1,运行这个程序,在练习过程中输入一串中文,当你想删除一个已经输入的汉
    字时候,光标在屏幕上显示删除了半个汉字,但实际上删除了一个汉字。
     



阅读(3092) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~