一个简单gets()函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:32:32
要求输入一行数,求有几个单词:
#include <stdio.h>
main()
{
char str[81];
int i=0;
int w=1;
gets(str);
for(i=0;str[i]!='\o';i++)
{if(str[i]==' ')
++w;}
printf("%d",w);
getch();
}
为什么输出来总是要多一个数.我不知道是哪里的原因.
一二楼的都错了.一楼的,我都试了.二楼的,为什么要令w=1呢,因为单词总比空格多一个.

我在DEV C++下运行的,你的程序有一处不对。

for(i=0;str[i]!='\o';i++)

应该是for(i=0;str[i]!='\0';i++)

是\0(斜线零)而不是\o(斜线字母o),即字符串结束字符为"\0"

修改后,运行正常。

输入:this is a test

输出:4

至于,你说的多一个数的问题就不明白了,应该没有问题。

int w=0;

++w

w++