fgets - 最大大小(int num)

时间:2011-05-25 21:11:26

标签: c++ fgets


在我的程序中,我正在调用函数fgets:

char * fgets ( char * str, int num, FILE * stream );  

循环多次,然后处理新的输入(如果有的话)。

在fgets规范中,它说:

  

民:       要读取的最大字符数(包括最终字符数)   空字符)。通常,长度   使用str传递的数组。

问题是我想要比指定的数量更多 - 并且如果它在同一行中则为IGNORE其余部分。

我发现的是,fgets会在下次调用函数时读取该行的下一部分。

我该如何避免这种行为?

2 个答案:

答案 0 :(得分:1)

您需要手动执行此操作 - 使用fgets消费字符并将结果复制到结果数组,直到找到换行符,转储内容并继续fgets

答案 1 :(得分:0)

size参数旨在用于防止读取比缓冲区可容纳的数据更多的数据。它不适用于跳过数据。

您必须编写代码,以便在读取后丢弃您不想要的字符串部分。

fgets()是旧的C函数。我们的想法是,该语言将提供最小的复杂功能,您可以将它们结合起来做您喜欢的事情。它们不会故意包含任何额外的功能。这使每个人都不为他们不使用的东西买单。想想乐高。