Posted on 2007-07-06 23:49
停留的风 阅读(436)
评论(0) 编辑 收藏 所属分类:
C语言学习历程
为了使得程序更加灵活,我们将不限制用户输入的行数。因此,我们需要找到一种方式,用于通知程序用户已经完成输入。有一个简单的方法可以完成这个任务,那就是当用户输入最后一行文字以后,再额外加一个空行。当我们使用readLine()函数读取这个额外的空行时,程序将在用作缓冲区的数组的第一个位置上存储一个空字符。我们程序可以专门检查这种特殊的情况,并由此得知用户已经完成了输入。
#include <stdio.h>
//判断是否是字母
bool alphabetic(const char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
return true;
}
else
return false;
}
//计算单词的个数
int countWords(const char string[])
{
int i,wordCount=0;
bool lookingForWord=true,alphabetic(const char c);
for(i=0;string[i]!='\0';++i)
{
if(alphabetic(string[i]))
{
if(lookingForWord)
{
wordCount++;
lookingForWord=false;
}
}
else
lookingForWord=true;
}
return wordCount;
}
//得到一个字符串
void readLine(char buffer[])
{
char character;
int i=0;
do
{
character=getchar();
buffer[i]=character;
++i;
}while(character!='\n');
buffer[i-1]='\0';
}
int main(void)
{
char text[81];
int totalWords=0;
void readLine(char buffer[]);
bool endOfText=false;
printf("Type in your text.\n");
printf("When you are done,press'RETURN'.\n\n");
while(!endOfText)
{
readLine(text);
if(text[0]=='\0')
{
endOfText=true ;
}
else
totalWords+=countWords(text);
}
printf("\nThere are %i words in the above text.\n",totalWords);
return 0;
}
测试运行图: