亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中使用lex統計文本文件字符數

2020-01-26 15:07:53
字體:
來源:轉載
供稿:網友

我曾經在Linux上寫的一個C程序,借助Lex做詞法分析來同時統計N個文本文件的字符數,單詞數和行數。讓我覺得Lex確實挺有意思的。確實Lex的功能非常強大,用來做小巧的詞法分析非常適合,也非常好用。這個程序參考了《Lex與Yacc》上的一個例子。

%{ unsigned int char_count = 0, word_count = 0, line_count = 0; %} %% [^ /t/n]+ {word_count++; char_count+=yyleng;}; /n {char_count++; line_count++;}; . char_count++; %% char **file_list; unsigned int current_file = 0; unsigned int total_file = 0; unsigned int total_cc = 0; unsigned int total_wc = 0; unsigned int total_lc = 0; typedef struct file_info{   unsigned int c;   unsigned int w;   unsigned int l;   char *name; }INFO; INFO **all; int create_info(int num) {   INFO *tmp;   int i;   if (num <= 0){     return -1;   }   all = (INFO **)malloc(sizeof(int *)*num);   for (i = 0; i < num; i++){     tmp = (INFO *)malloc(sizeof(INFO));     tmp->c = 0;     tmp->w = 0;     tmp->l = 0;     tmp->name = NULL;     all[i] = tmp;   }   return 1; }   int delete_info(int num) {   int i;   if ((all == (INFO **)0) || num <= 0){     return -1;   }   for (i = 0; i < num; i++){     free(all[i]);   }   free(all);   return 1; } int set_info(int pos) {   int length = 0;   if (pos < 0){     return -1;   }   all[pos]->c = char_count;   all[pos]->w = word_count;   all[pos]->l = line_count;     all[pos]->name = file_list[pos];      return 1; } int main(int argc, char** argv) {   FILE *file;     int position = 0;   int i;      file_list = argv + 1;   total_file = argc - 1;   current_file = 0;      printf("--------------------------------------------------------------/n",  total_file);      if (argc > 1){     if (create_info(total_file) == -1){       fprintf(stderr, "%s/n", "Encounter a error when malloc memory.");       exit(1);     }   }   if (argc == 2){                 file=fopen(argv[1], "r");     if (!file){       fprintf(stderr, "Could not open %s./n", argv[1]);       delete_info(total_file);       exit(1);     }         yyin = file;   }      yywrap();   yylex();     if (argc > 1){     total_cc += char_count;     total_wc += word_count;     total_lc += line_count;              if (set_info(current_file-1) == -1){       fprintf(stderr, "%s/n", "Encounter a error when set information to  INFO.");       delete_info(total_file);       exit(1);     }              for (i = 0; i < total_file; i++){       printf("char:%-8lu word:%-8lu line:%-8lu file name:%s/n", all[i]-> c, all[i]->w, all[i]->l, file_list[i]);     }     printf("----------------------- total -------------------------------- /n");     printf("chars:%-8lu words:%-8lu lines:%-8lu files:%d/n", total_cc, tot al_wc, total_lc, total_file);   }else{         printf("char:%-8lu word:%-8lu line:%-8lu/n", char_count, word_count, l ine_count);   }      delete_info(total_file);   return 0; }  yywrap() {   FILE *file = NULL;      if ((current_file > 0) && (current_file < total_file) && (total_file > 1)) {     total_cc += char_count;     total_wc += word_count;     total_lc += line_count;          if (set_info(current_file-1) == -1){       fprintf(stderr, "%s/n", "Encounter a error when set information to  INFO.");       delete_info(total_file);       exit(1);     }            char_count = word_count = line_count = 0;     fclose(yyin);       }   while ((file_list[current_file] != (char *)0) && (current_file < total_fil e)){          file = fopen(file_list[current_file++], "r");     if (!file){       fprintf(stderr, "could not open %s .", file_list[current_file - 1] );     }else{       yyin = file;       break;     }   }   return (file? 0 : 1); } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕久久久av一区| 久久久女人电视剧免费播放下载| 性色av一区二区三区免费| 日韩精品中文字幕视频在线| 中文字幕日韩av电影| 欧美电影免费观看高清| 中文字幕精品—区二区| 在线日韩av观看| 国产亚洲一区精品| 日韩av一区二区在线观看| 九九精品在线播放| 91黑丝在线观看| 欧美在线观看日本一区| 九九精品视频在线观看| 精品久久久久久久久久久久久久| 777午夜精品福利在线观看| 成人日韩在线电影| 亚洲欧美色婷婷| 搡老女人一区二区三区视频tv| 91在线观看欧美日韩| 亚洲已满18点击进入在线看片| 38少妇精品导航| 啪一啪鲁一鲁2019在线视频| 久久国产精彩视频| 不卡av电影在线观看| 日韩免费高清在线观看| 国内精品小视频| 亚洲爱爱爱爱爱| 国产69久久精品成人看| 92看片淫黄大片欧美看国产片| 在线一区二区日韩| 成人a级免费视频| 日韩电影在线观看免费| 亚洲成人av中文字幕| 国产精品女人网站| 欧美乱大交做爰xxxⅹ性3| 精品国产乱码久久久久久天美| 日本成人精品在线| 国产成人综合一区二区三区| 亚洲精品国产免费| 亚洲国产精品电影| www.日韩免费| 日韩中文av在线| 久久久精品电影| 日韩美女视频中文字幕| 一区二区三区四区视频| 精品久久久久久久大神国产| 欧美丰满少妇xxxxx做受| 91国内免费在线视频| 青青精品视频播放| 中文精品99久久国产香蕉| 欧美日韩国产激情| 最近更新的2019中文字幕| 久久久视频免费观看| 美女视频黄免费的亚洲男人天堂| 日韩国产欧美精品一区二区三区| 日韩美女免费观看| 国产成人精品免费视频| 国产成人激情小视频| 亚洲综合大片69999| 色噜噜久久综合伊人一本| 国产精品成人一区二区三区吃奶| 欧美精品在线免费播放| 欧美在线播放视频| 国产精品久久久久久久久久| 欧美日韩高清区| 国产精品极品在线| 欧美激情亚洲激情| 欧美成人自拍视频| 国产一区二区三区在线免费观看| 久久久免费精品视频| 亚洲图片制服诱惑| 欧美色另类天堂2015| 日韩在线播放av| 久久综合色88| 国语自产精品视频在线看一大j8| 久久久免费电影| 欧美最猛性xxxxx(亚洲精品)| 永久555www成人免费| 精品magnet| 精品久久久久久中文字幕大豆网| 亚洲国产私拍精品国模在线观看| 国模极品一区二区三区| 欧美极品少妇全裸体| 亚洲综合日韩中文字幕v在线| 91精品中国老女人| 国产欧美精品日韩精品| 久久久黄色av| 亚洲18私人小影院| 日韩av免费看| 青草青草久热精品视频在线观看| 91中文字幕一区| 性视频1819p久久| 一区二区三区www| 亚洲精品电影在线观看| 夜色77av精品影院| 欧美亚洲国产日本| 成人黄色中文字幕| 精品视频在线播放免| 国产精品日韩专区| 国产精品白嫩初高中害羞小美女| 日韩极品精品视频免费观看| 国产精品久久视频| 日韩最新中文字幕电影免费看| 91影院在线免费观看视频| 色婷婷综合久久久久| 亚洲国产精品电影在线观看| 国产主播在线一区| 国产在线视频欧美| 久热国产精品视频| 91久久精品美女| 亚洲电影成人av99爱色| 国产精品www| 久久久亚洲国产天美传媒修理工| 青青a在线精品免费观看| 久久久久久久久久国产精品| 日韩欧美精品在线观看| 国产成人av网址| 久久久精品免费视频| 国产精品尤物福利片在线观看| 宅男66日本亚洲欧美视频| 欧美激情免费视频| 91精品国产综合久久香蕉的用户体验| 欧美日韩精品在线视频| 欧美激情啊啊啊| 亚洲欧美三级伦理| 日韩在线观看免费| 97人人爽人人喊人人模波多| 久久久在线免费观看| 亚洲人午夜精品| 欧美精品在线播放| 91国产精品电影| 成人性生交大片免费观看嘿嘿视频| 国产精品一二三在线| 成人福利在线视频| 亚洲天天在线日亚洲洲精| 国产福利视频一区二区| 久久国产精品久久国产精品| 欧美床上激情在线观看| 久久九九热免费视频| 国产69精品久久久久9999| 国产精品久久久一区| 日韩麻豆第一页| 国产视频精品一区二区三区| 91经典在线视频| 2021国产精品视频| 亚洲国产精品久久91精品| 亚洲第一区中文99精品| 欧美性猛交xxxx黑人| 亚洲欧美中文另类| 91精品国产高清久久久久久| 九九精品在线观看| 日韩av综合网站| 欧美激情网站在线观看| 欧美精品免费在线观看| 国产亚洲精品美女久久久久| 成人久久久久爱| 91色p视频在线| 精品久久久久久久久久ntr影视| 成人av在线网址| 欧美日韩国产中文精品字幕自在自线| 亚洲免费一级电影| 国产91在线视频| 国产日韩欧美自拍|