用C来计算字符串中单词数时,可以如下:
int countword(char list[]) #define YES 1 #define NO 0 { int i,inaword,count =0; inaword = NO; for(i = 0;list[i] != '\0';i++) { if(list[i] == ' ') inaword = NO; else if(inaword == NO) { inaword = YES; count++; } } return(count); }
可是这只是根据空格来计算,不可以根据标点符号来,万一两个词之间有一个逗号,咋办?
一般的英语文章的规则是:标点符号后面要有一个空格以示区分,并且也有例如冒号引号等连用的标点符号。
按照LZ的代码会造成重复计算的问题。
所以应该在
else if(inaword == NO) { inaword = YES; count++; }
这一段的判断条件后另加一个判断当前字符是否是字母的条件。
也就是
else if(inaword == NO && (isalnum(list[i])) { inaword = YES; count++; }
前面的
if(list[i] == ' ') inaword = NO;
判断条件可改成
if(!isalnum(list[i])) inaword = NO;
记得要#include <ctype.h>
哦,好,谢谢哈
if(list[i] == ' ')改成if(list[i] == ' '||list[i]==","||list[i]==";"||list[i] == '.')或者更多的符号
嗯,谢谢
可以将计数条件改为:顺序扫面字符串,若出现非字母的字符则单词数加1,否则继续
是哦,谢了哈