作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从教科书中学习 C,但不明白为什么它不能编译。 Code::Blocks 指出“fgets”处的参数太少。我假设“缓冲区”将键盘输入存储到 volatile 内存中,并且 fgets 应该等待来自输入和 Enter 的参数。
如果可能的话,非常感谢任何帮助和/或解释!谢谢
/*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;
}
最佳答案
fgets()
需要 3 个参数。这是原型(prototype):
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);
}
关于c - 使用 C 的简单程序编译错误, 'Too few arguments' 为 'fgets',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555452/
我是一名优秀的程序员,十分优秀!