【问题标题】:read a '\n' (newline) terminated string using windows via C通过 C 使用 windows 读取 '\n' (换行符)终止的字符串
【发布时间】:2011-01-26 10:25:03
【问题描述】:

是否可以仅使用 C 而不是 C++ 读取以换行符终止的随机长度字符串? 我一直在尝试寻找示例,但似乎找不到任何使用此功能的 windows。我可以完成从串口读取数据,但问题是这些数据的长度是随机的。唯一的共同因素是这些字符串由换行符终止。非常感谢

【问题讨论】:

  • 是的,这是可能的。例如,只需逐个字符地读取它。
  • 感谢先生的回复。有可能更快的方法吗?还是这是我唯一可以使用的方法?
  • 不,一个程序读取每个字符的速度不可能比读取每个字符的时间快……你为什么认为它可以比这更快?魔法?还是跳过一些字符并希望它们不重要?
  • @Lundin:由于函数调用甚至上下文切换开销(取决于 API使用,当然)。如果串行 I/O 不是这种情况,那么就足够公平了,但这对很多人(包括我自己)来说肯定不是显而易见的。用讽刺来回应是不必要的,也是无益的。
  • @Marcelo 对于任何形式的串行 I/O 来说确实不是这种情况,其中字符一个接一个地出现。在这种情况下,最大的瓶颈是 RS-232 上的传输时间。即使您使用的是 UART 可以管理的最快波特率之一,它仍然会比 PC 慢得多。

标签: c windows serial-port


【解决方案1】:

不简单。在循环中调用 fgets 直到你碰到一个换行符,保持你读到的每个缓冲区。

【讨论】:

  • 您不能将 fgets() 用于 Windows 串行端口。您必须直接使用 Windows API 函数。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2010-11-12
相关资源
最近更新 更多