1


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

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

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

在 fgets 规范中,它说:

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

问题是我想获得的数量不超过指定的数量 - 如果它在同一行,则忽略其余部分。

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

我怎样才能避免这种行为?

4

2 回答 2

1

您需要手动完成 - 使用字符fgets并将结果复制到结果数组,直到找到换行符,转储内容,然后继续fgets.

于 2011-05-25T21:15:38.323 回答
0

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

您必须编写代码来丢弃读取后不需要的字符串部分。

fgets() 是一个旧的 C 函数。这个想法是该语言将提供最小的复杂性功能,您可以将它们组合起来做您喜欢的事情。它们没有故意包含任何额外的功能。这可以防止每个人为他们不使用的东西付费。想想乐高。

于 2011-05-25T21:19:49.477 回答