状态机图示
宏定义
#include<stdio.h>
#define OUT 0
#define IN 1
#define INIT OUT
函数
接收一个filename参数,打开文件,若文件不存在(fp == NULL),则返回-1。通过循环读取文件中的每一个字符,直到文件结束(EOF)。
int count_word(char *filename)
{
int status = INIT;
int word = 0;
FILE *fp = fopen(filename,"r");
if(fp == NULL) return -1;
char c;
while((c = fgetc(fp))!= EOF){ //通过循环读取文件中的每一个字符
如果当前状态为OUT且读到的字符不是符号,表示遇到新单词,状态转为IN并增加单词计数。
if((' ' == c)|| ('\n' == c)||('\t' == c)){ //如果读取的字符是空格、换行等等,设置状态为OUT。
status = OUT;
}else if(status == OUT){
status = IN;
word ++;
}
}
return word;
}
主函数
int main(int argc, char*argv[]){
if(argc < 2) return -1;
printf("word: %d\n", count_word(argv[1]));
}
执行结果
文章参考与<零声教育>的C/C++linux服务期高级架构系统教程学习: https://it.0voice.com/p/t_pc/course_pc_detail/camp_pro/course_2U9D57IzMfQsoiaMuokdvXYV11c