我正在从教科书中学习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;
}
答案 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);
}