计算整个字符串包括C中的空格

Hax*_*sxz 3 c

我正在尝试设置一个代码来计算整个字符串,并且在它找到的第一个空格后不会停止.我怎么做?

我试过这种代码,但它只计算第一个单词,然后显示第一个单词中的字母数.

到目前为止,这是我尝试过的.

int main(){
    char get[100];
    int i, space=0, len=0, tot;
    scanf("%s", get);

    for (i=0; get[i]!='\0'; i++)
    {
        if (get[i] == ' ')
            space++;
        else 
            len++;
    }

tot = space + len;
printf("%i", tot);
}
Run Code Online (Sandbox Code Playgroud)

int main(){
    char get[100];
    int len;
    scanf("%s", &get);
    len = strlen(get);
    printf("%i", len);
}
Run Code Online (Sandbox Code Playgroud)

但仍然会得到与第一个相同的答案.

我期待如果输入:狐狸很华丽.输出:19

但我得到的只是输入:狐狸很华丽.输出:3

Ark*_*kku 5

strlen已经包含空格,因为它计算字符串的长度直到终止NUL字符(零'\0').

你的问题是当遇到空格时停止读取的%s转换scanf,所以你的字符串从未包含在它的第一位(你可以通过打印出字符串来轻松验证).(您可以通过使用不同的scanf转换来修复它,但通常通过读取更容易使事情正确fgets- 它还会强制您指定缓冲区大小,修复当前代码中潜在的缓冲区溢出.)