当我使用scanf_s时我得到4但是当我使用fgets()时得到1?

时间:2016-02-08 17:18:48

标签: c++ scanf fgets word

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

void main()
{
    char s[200];
    int count = 0, i;

    printf("enter the string\n");
    //scanf_s("%[^\n]s", s, sizeof(s));
    fgets(s, sizeof*(s), stdin);
    for (i = 0;s[i] != '\0';i++)
    {
        if (s[i] == ' ')
        count++;
    }
    printf("number of words in given string are: %d\n", count + 1);
    getchar();
}

1 个答案:

答案 0 :(得分:0)

fgets(s, sizeof*(s), stdin); - 错了。它应该是sizeof(s)

*(s)是字符(数组的第一个元素),而s是数组。因为单个字符的大小为1,所以你得到1。