c - 扫描两个整数(如 scanf ("%d\n %d")时使用\n 有什么用?

标签 c scanf

我在 Hackerrank 的编码问题的预完成部分中发现了上述类型的代码。我想知道什么 \n会做?它有什么区别吗?

最佳答案

读一些好的C reference网站,也许还有 C11 标准 n1570可能 Modern C .
scanf(3) 的文档解释了 \n 的情况在格式控制字符串中。它像空格一样处理 并匹配输入流中的一系列空格字符(例如 ' ''\t''\n' )。
如果您明确想解析行,您可以使用一些解析器生成器,如 GNU bison和/或先使用 fgets(3)getline(3)及以后 sscanf(3) .
不要忘记处理错误情况。见 errno(3) .考虑使用 EBNF 记录文档表示程序的有效输入。
研究现有开源程序的源代码,包括GNU bashGNU make .比 2020 年要注意 UTF-8应该在任何地方使用(那么您可能想要使用 libunistring,您可以研究和改进其源代码,因为它是 free software )。
如果您使用 Linux,请考虑使用 gdb(1)ltrace(1)了解您的程序的行为。当然,请阅读 C 编译器(可能是 GCC )和调试器(可能是 GDB )的文档。

关于c - 扫描两个整数(如 scanf ("%d\n %d")时使用\n 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64438340/

相关文章:

c - fscanf 有 2 个文件和多行

c - 枚举捕获 ALSA 设备并从中捕获

c - 使用链表的堆栈实现有什么问题?

c - 如何通过scanf传值给函数

c - 是否有可能在c中的一个scanf()中获得不同数据类型的两个输入?

计算 float (hw) C

c - 这个死锁隐藏在哪里?

c - 让: ** NO targets specififed and no makefile found.停止

c - 使用位操作减少缓存开销

c - 为什么我在这段代码中有一个无限循环