输入一行字符(<=80),统计其中有多少个单词,设单词之间用空格分隔

大一刚接触代码,被代码磨平了棱角
/*输入一行字符(<=80),统计其中有多少个单词,设单词之间用空格分隔。*/
#include
#include
using namespace std;
int main() {
    char str[80];
    int n = 0;    //n+1为单词数量
    cout << "请输入一行字符" << endl;
    cin >> str;
    for (int i = 1;str[i]!='\0'; i++) {
        if (str[i] == ' ') {
            n++;
        }
    }
    cout << n + 1;
    return 0;
}

不论输入多少单词,运行结果为什么总是1啊,好烦

可以逐个字符接受输入。

/*输入一行字符(<=80),统计其中有多少个单词,设单词之间用空格分隔。*/
#include<iostream>
#include<string>
using namespace std;

int main()
{
    char str[80] = {0};
    char ch;
    int m = 0;
    int n = 0;    //n+1为单词数量
    cout << "请输入一行字符" << endl;
    while((ch = getchar()) != '\n') {
        str[m] = ch;
        m++;
    }
    for (int i = 1;str[i]!='\0'; i++) {
        if (str[i] == ' ') {
            n++;
        }
    }
    cout << n + 1;
    return 0;
}

将cin>>str改成gets(str),cin遇到空格会有问题