这段代码的思路是:
一个字符串如,I am student
这个字符串用数组str[100]存储的话,如下
str[0]='I';//str[0]中内容为I
str[1]=' ';//str[1]中内容为空格,以下同理
str[2]='a';
str[3]='m';
str[4]=' ';
str[5]='s';
str[6]='t';
str[7]='u';
str[8]='d';
str[9]='e';
str[10]='n';
str[11]='t';
每个单词间都由空格就是空字符‘ ’来隔开,就是说一个单词的前面一定有空格。
要统计单词个数,只需要判断符合条件:位置i为空格,位置i+1为非空格字符字符就可以确定为一个单词了。只需要符合条件的时候计数就可以了,其它不符合条件的就执行i++跳过i位置。
但是这段程序没有考虑以标点分隔单词的情况如:I am fine,and you?
这个句子程序会统计只有四个单词,就是它会把fine,and当做一个单词,因为该程序无法识别标点分隔的情况,只识别空格分隔单词的情况.
如果要识别逗号和句号只需要把
if(c!='\0')num++;
while((c=str[i])!=' '&&c!='\0')i++;
改成
if(c!='\0')num++;i++;
while((c=str[i])!=' '&&c!='\0'&&c!=','&&c!='.')i++;
就可以了,就是说只需要在这个语句里按以上格式添加你想区分的标点就好。