get_word_count

来源:互联网 发布:淘宝优惠券怎么领取 编辑:程序博客网 时间:2024/06/05 17:56
// get_word_count.cpp : Defines the entry point for the console application.//#include "stdafx.h"#define TRUE 255#define FALSE 0//  判断指定字符是否为空格(包括空格符、制表符、回车符和换行符)static unsigned char is_spacewhite(char c){if (c == 32 || c == 9 || c == 13 || c == 10)return TRUE;elsereturn FALSE;}static int get_word_count(const char *buf){int n = 1;int i = 0;char c = ' ';char flag = 0; // 处理多个空格分隔的情况,0:正常情况,1:已遇到一个空格if (*buf == '\0')return 0;//  第1个字符是空格,从0开始计数if (is_spacewhite(*buf) == TRUE)n--;//  扫描字符串中的每一个字符for (; (c = *(buf + i)) != '\0'; i++){//  只由一个空格分隔单词的情况if (flag == 1 && is_spacewhite(c) == FALSE){flag = 0;}//  由多个空格分隔单词的情况,忽略多余的空格else if (flag == 1 && is_spacewhite(c) == TRUE){continue;}//  当前字符为空格是单词数加1if (is_spacewhite(c) == TRUE){n++;flag = 1;}}//  如果字符串以一个或多个空格结尾,不计数(单词数减1)if (is_spacewhite(*(buf + i - 1)) == TRUE)n--;return n;}int main(int argc, char* argv[]){char *buf="123 321 456789qqq";int i=get_word_count(buf);printf("%s,%d\n",buf,i);    buf="   ooo www123 444iii  ";i=get_word_count(buf);printf("%s,%d\n",buf,i);return 0;}/*123 321 456     789     qqq,5   ooo www              123      444            iii  ,5Press any key to continue*/