字符数组的起始位置有空格吗?
《C程序设计》教材里有这样一个例题(源于(第三版)P150):输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
下面是书中的程序:
#include <stdio.h>
void main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for (i=0;(c=string[i]) != '\0';i++)
{
if (c == ' ')
word=0;
else if (word == 0)
{
word=1;
num++;
} }
printf("There are %d words in the line.\n",num);
}
下面是我自己改的程序:
#include <stdio.h>
void main()
{
char string[81];
int i,num=1;
char c;
gets(string);
for (i=0;(c=string[i]) != '\0';i++)
{
if (c == ' ')
num++;
}
printf("There are %d words in the line.\n",num);
}
两个程序的区别基本都已经标出来了。我有两个问题:
1.教材的程序,一行字符的开头不统计空格;而我这个程序,因为是num初始化为1,是不是应该算作没有统计开头的空格呢??
字符开头的空格怎么算呢??
2.教材中的程序,用word作为判别是否单词的标志——这是不是太麻烦了?
我不用word,不也搞出来了?!!
还是说,这个判别标志在大型程序中才能显出威力来??
[[it] 本帖最后由 YuriGagarin 于 2008-8-7 08:51 编辑 [/it]]