使用C的简单程序编译错误,'fgets'的'参数太少'

时间:2016-07-24 18:37:08

标签: c

我正在从教科书中学习C,但却看不出为什么这不能编译。 Code :: Blocks表示“fgets”中的参数太少。我假设'缓冲'是将键盘输入存储到易失性存储器中。 fgets应该等待来自输入和输入的参数。输入

如果可能,任何帮助和/或解释都非常感谢!感谢

/*ex02-05.c*/
#include <stdio.h>
#include <string.h>
int main(void)

{
    char buffer[256];
    printf("Enter your name and press Enter:\n");

    fgets(buffer);

    printf("\nYour name has %d characters and spaces",
            strlen(buffer));

    return 0;
}

1 个答案:

答案 0 :(得分:4)

fgets()有3个参数。这是原型:

   char *fgets(char *s, int size, FILE *stream);

所以改变

fgets(buffer);

fgets(buffer, sizeof buffer, stdin);

另请注意,如果缓冲区有足够的空间,fgets()将读取换行符字符。如果这是您不想要的,那么您可以使用以下内容删除它:

buffer[strcspn(buffer, "\n")] = 0;

根据@Sebastian的建议,您也可以使用#define大小:

#define SIZE 256

int main(void)
{

    ...
    fgets(buffer, SIZE, stdin);
}