- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个代码,用户将键入几个段落,当用户以“END”开始段落时,它将停止阅读。代码将通过计算每个字母并显示图表和等等来操作字符串,但这与问题无关。问题是:哪个段落不得超过 1000 个字符。
代码的较小版本如下(考虑到我只想存储 5 个字符的字符串 - 尽管我会扩展它)。
#include <stdio.h>
#include <string.h>
int main()
{
char paragraph[5];
for ( ; ; )
{
fgets(paragraph, 5, stdin);
if (paragraph[0]=='E' && paragraph[1]=='N' && paragraph[2]=='D')
{ return 0; }
printf("%s", paragraph);
}
return 0;
我的问题是:如果我输入超过5个字符,printf函数仍然打印超过5个字符,我不知道为什么。我已经检查了我能检查的所有内容。
请帮助像我这样的初学者。
最佳答案
fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer. A terminating null byte ('\0') is stored after the last character in the buffer.
因此,当输入超过 4 个字符(包括换行符)时,仅读取 4 个字符,其余字符保留在缓冲区中,准备下次 fgets
读取。
在这种情况下,您的 printf
将不会打印任何换行符,并且会被多次调用,使其看起来像打印超过 4 个字符。
按照评论中的建议,尝试 printf("[%s]", paragraph);
查看各个 printf
调用。
关于c - fgets 读取比应有的更多的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512839/
当我运行我的应用程序时,我在控制台中收到一条消息: 2011-11-16 19:17:41.292 Juice[8674:707] Applications are expected to have
我在 JavaScript 中使用了这个语句,但是当我尝试在 TypeScript 项目中使用它时出现错误。它在提示 fetch(...args) const fetcher = (...args)
我是一名优秀的程序员,十分优秀!