C语言实现wc项目

时间:2021-10-09 23:24:53

  该World Count项目用的是C语言编写,只实现了-c、-w、-l、三个功能,由于简单全部代码均由小编自己编写,用的是VS2013只支持windows平台cmd运行。

  木有图形界面,参考了Linux系统中的操作方式,即除了可以直接运行.exe程序外,还可以在cmd下输入如:wc.exe [file] -c的带参数方式通过main函数的参数接收来运行。

  功能

  1.直接运行,提示输入文件路径,显示三个功能即字符、单词、行数。

  2.在cmd下输入,如果参数只有两个则要提示用户需要的功能(-c、-w、-l),若是三个参数则通过strcmp()判断中间的字符来显示相应的功能。

  不足之处

    拓展功能还未实现,一味的自己打代码,未有效的利用资源,参考已有的代码。

  项目源码

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <conio.h>
  4 #include <string.h>
  5 int main(int argc, char * argv[])
  6 {
  7     int wc_char = 0;
  8     int wc_word = 1;
  9     int wc_line = 1;
 10     char filename[80];
 11     FILE *fp = NULL;
 12     if (argc == 1)
 13     {
 14         printf("missing file name:\nPlease input file name:");
 15         gets(filename);
 16         fp = fopen(filename, "r");
 17         if (fp == NULL)
 18         {
 19             printf("打开有误!\n");
 20             printf("请按enter键继续....");
 21             _getch();
 22             exit(0);
 23             //...
 24         }
 25         printf("This is the file :\n");
 26         while (1)
 27         {
 28             char ch;
 29             ch = fgetc(fp);
 30             if (ch >= 'A'&&ch <= 'z')
 31             {
 32                 putchar(ch);
 33                 wc_char++;
 34             }
 35             else if (ch == ' ')
 36             {
 37                 putchar(ch);
 38                 wc_word++;
 39             }
 40             else if (ch == '\n')
 41             {
 42                 putchar(ch);
 43                 wc_word++;
 44                 wc_line++;
 45             }
 46             else if (ch = EOF)
 47             {
 48                 break;
 49             }
 50         }
 51         printf("The char count is %d\n", wc_char);
 52         printf("The word count is %d\n", wc_word);
 53         printf("The line count is %d\n", wc_line);
 54         fclose(fp);
 55         _getch();
 56         exit(0);
 57     }
 58     else if (argc == 2)
 59     {
 60         fp = fopen(argv[1], "r");
 61         if (fp == NULL)
 62         {
 63             printf("打开有误!\n");
 64             printf("请按enter键继续....");
 65             _getch();
 66             exit(0);
 67             //...
 68         }
 69         while (1)
 70         {
 71             char ch;
 72             ch = fgetc(fp);
 73             if (ch >= 'A'&&ch <= 'z')
 74             {
 75                 wc_char++;
 76             }
 77             else if (ch == ' ')
 78             {
 79                 wc_word++;
 80             }
 81             else if (ch == '\n')
 82             {
 83                 wc_word++;
 84                 wc_line++;
 85             }
 86             else if (ch = EOF)
 87             {
 88                 break;
 89             }
 90         }
 91         printf("文件打成功!\n请输入统计方式如(-c\-w\-l):");
 92         gets(filename);
 93         if (strcmp(filename, "-c") == 0)
 94         {
 95             printf("The char count is %d\n", wc_char);
 96         }
 97         else if (strcmp(filename, "-w") == 0)
 98         {
 99             printf("The word count is %d\n", wc_word);
100         }
101         else if (strcmp(filename, "-l") == 0)
102         {
103             printf("The line count is %d\n", wc_line);
104         }
105     }
106     else if (argc == 3)
107     {
108         fp = fopen(argv[2], "r");
109         if (fp == NULL)
110         {
111             printf("打开有误!\n");
112             printf("请按enter键继续....");
113             _getch();
114             exit(0);
115             //...
116         }
117         while (1)
118         {
119             char ch;
120             ch = fgetc(fp);
121             if (ch >= 'A'&&ch <= 'z')
122             {
123                 wc_char++;
124             }
125             else if (ch == ' ')
126             {
127                 wc_word++;
128             }
129             else if (ch == '\n')
130             {
131                 wc_word++;
132                 wc_line++;
133             }
134             else if (ch = EOF)
135             {
136                 break;
137             }
138         }
139         if (strcmp(argv[1],"-c")==0)
140         {
141             printf("The char count is %d\n", wc_char);
142         }
143         else if (strcmp(argv[1],"-w")==0)
144         {
145             printf("The word count is %d\n", wc_word);
146         }
147         else if (strcmp(argv[1],"-l")==0)
148         {
149             printf("The line count is %d\n", wc_line);
150         }
151         fclose(fp);
152     }
153 }

  本项目源代码上传至个人的GitHub:https://github.com/BelieveMyself-ZLH/wc