C语言实现wc项目
该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