C语言,统计字符的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:37:47
#include<stdio.h>
main()
{
char string[80];
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);

}循环的位置能不能详细说一说,IF这个地方有点不明白,if和else怎么搭配的?能不能讲详细点

将程序段如下缩排:

for(i=0;(c=string[i])!='\0';i++)
*if(c=='') word=0;①
**else ***if(word==0){word=1;num++;}②

这样可能会看的清楚一点。在for(***)后面只执行一个“语句”(大括号括起来的算一个语句)。if和else是两个搭配出现的部分,算是一个语句,(if***else if***else if***……else也是如此)因此这两句不需要用大括号括起来。这跟程序段中①②位置的情况是一样的,如果①后面也有一句num++;而没有大括号将这两句括起来的话,*处if 只带word=0跟在for后循环,**处的else将无从匹配而出现错误。。。。。

获取字符串的时候默认后尾跟'\0'所以这个循环就是检查到没到'\0'没有加1,到了返回,
不过怎么看的这么不舒服呢……
哦知道了,字符,不算空格,if(c=='')
word=0;
是在检查是否为空格吧