在我的程序中,我正在调用函数fgets:
char * fgets ( char * str, int num, FILE * stream );
循环多次,然后处理新的输入(如果有的话)。
在fgets规范中,它说:
民: 要读取的最大字符数(包括最终字符数) 空字符)。通常,长度 使用str传递的数组。
问题是我想要比指定的数量更多 - 并且如果它在同一行中则为IGNORE其余部分。
我发现的是,fgets会在下次调用函数时读取该行的下一部分。
我该如何避免这种行为?
答案 0 :(得分:1)
您需要手动执行此操作 - 使用fgets
消费字符并将结果复制到结果数组,直到找到换行符,转储内容并继续fgets
。
答案 1 :(得分:0)
size参数旨在用于防止读取比缓冲区可容纳的数据更多的数据。它不适用于跳过数据。
您必须编写代码,以便在读取后丢弃您不想要的字符串部分。
fgets()是旧的C函数。我们的想法是,该语言将提供最小的复杂功能,您可以将它们结合起来做您喜欢的事情。它们不会故意包含任何额外的功能。这使每个人都不为他们不使用的东西买单。想想乐高。