发博文
Linuxwhite

linuxwhite.blog.chinaunix.net

Keep Walking...   
个人资料
  • 博客访问:91657
  • 博文数量:86
  • 博客积分:2278
  • 博客等级:大尉
  • 注册时间:2008-03-14 01:07:50
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文


很小。小到几乎不能说是程序。Linux/Unix下使用

两个部分:一个shell脚本,两个C程序。(使用时,请将三者放同一目录,然后编译两个C程序,并将shell脚本设为可执行)
C程序代码如下:
  1. /* cl :获取并返回文本文件行数 */
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. int main(int argc, char *argv[])
  5. {
  6.     int lineno = 0;
  7.     int ch;
  8.     FILE *ifp;

  9.     if (argc != 2) {
  10.         printf("Usage: cl <file>\n");
  11.         return -1;
  12.     }

  13.     if ( (ifp=fopen(argv[1], "r")) == NULL) {
  14.         perror("ifp, fopen");
  15.         return -1;
  16.     }

  17.     while ( (ch=fgetc(ifp)) != EOF) {
  18.         if (ch == '\n')
  19.             lineno++;
  20.     }

  21.     printf("%d", lineno);

  22.     fclose(ifp);
  23.     return lineno;
  24. }
  1. /* datapre :提取日期数据,此程序写的很糟糕,欢迎回复更好的实现 */
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. int main(int argc, char *argv[])
  5. {
  6.     int countGeng = 0;
  7.     char time[20] = {'\0'};
  8.     int indexOfTime = 0;
  9.     char temp[20] = {'\0'};
  10.     int indexOfTemp = 0;
  11.     char character;
  12.     int count = 0;
  13.     FILE *in = NULL, *out = NULL;
  14.    
  15.     if (argc != 3) {
  16.         printf("Usage: %s <inputfile> <outputfile>\n", argv[0]);
  17.         exit(-3);
  18.     }
  19.     if ((in = fopen(argv[1], "r")) == NULL) {
  20.         printf("Data file open error\n");
  21.         exit(-1);        
  22.     }
  23.     if ((out = fopen(argv[2], "w")) == NULL) {
  24.         printf("Output file create error\n");
  25.         exit(-2);
  26.     }
  27.     while ((character = fgetc(in)) != EOF) {
  28.         indexOfTemp = 0;
  29.         indexOfTime = 0;
  30.         if (character != '2') {
  31.             continue;
  32.         }
  33.         temp[indexOfTemp] = character;
  34.         indexOfTemp++;
  35.         
  36.         character = fgetc(in);
  37.         if (character != '0') {
  38.             continue;
  39.         }
  40.         temp[indexOfTemp] = character;
  41.         indexOfTemp++;
  42.         
  43.         character = fgetc(in);
  44.         if ((character != '1') && (character != '0')) {
  45.             continue;
  46.         }
  47.         temp[indexOfTemp] = character;
  48.         indexOfTemp++;
  49.         
  50.         character = fgetc(in);
  51.         if ((character != '0') && (character != '1') && (character != '9') && (character != '8')) {
  52.             continue;
  53.         }
  54.         temp[indexOfTemp] = character;
  55.         indexOfTemp++;
  56.         
  57.         character = fgetc(in);
  58.         if (character != '-') {
  59.             continue;
  60.         }
  61.         temp[indexOfTemp] = character;
  62.         indexOfTemp++;
  63.         
  64.         for (indexOfTime = 0; indexOfTime <= indexOfTemp; indexOfTime++) {
  65.             time[indexOfTime] = temp[indexOfTime];
  66.         }
  67.         indexOfTime--;    
  68.         for (count = indexOfTime; count < 19; count++) {
  69.             time[count] = fgetc(in);
  70.         }
  71.         printf("time:%s\n", time);
  72.         fprintf(out, "%s\n", time);    
  73.         countGeng++;
  74.     }
  75.     printf("Totally, %d Records.\n\n", countGeng);
  76.     fprintf(out, "%d\n", countGeng);
  77.     fclose(in);
  78.     fclose(out);
  79.     printf("Done!\n");
  80.     printf("Check the %s\n", argv[2]);
  81.     return 0;
  82. }
shell脚本代码如下:
  1. ##### check :检查小说是否在此脚本运行之后又有更新,如有,则打开浏览器浏览。   
  2. # 参数bookReaderUrl是起点的目录地址。比如《黄龙真人异界游》的目录地址:http://www.qidian.com/BookReader/1737805.aspx

  3. #!/bin/sh
  4. LINE1=0;
  5. LINE2=0;
  6. USAGE="Usage: `basename $0` <bookReaderUrl>"

  7. if [ $# -lt 1 ] ; then
  8.     echo "$USAGE"
  9.     exit 1
  10. fi

  11. wget $1 -O web1;
  12. ./datapre web1 out1;
  13. LINE1=`./cl out1`;
  14. echo $LINE1;

  15. while :
  16. do
  17.     sleep 300
  18.     wget $1 -O web2;
  19.     ./datapre web2 out2;
  20.     LINE2=`./cl out2`;

  21.     if [ $LINE2 -gt $LINE1 ] ; then
#下一行中,将chromium-browser换成你系统上的浏览器,比如firefox。
  1.     chromium-browser $1;
  2.     exit;
  3.     fi

  4. done

博客推荐文章
亲,您还没有登录,请[登录][注册]后再进行评论