首页 > 解决方案 > 如何在 EOF 之前读取多个整数和字符串输入的 scanf?

问题描述

我需要像这样执行 scanf 函数: scanf("%s%d%d%s%d%d%s%d%d", X, &LO, &HI, Y, &LO2, &HI2, Z, &LO3, &HI3)我希望每当用户按 ctrl+D 结束扫描并关闭程序时。

例如:

l 7 9 c 3 8 v 4 ctrl+D //input

--> end of scanning and the end of program. 

你能帮我这样做吗?我是编程的初学者..

标签: c

解决方案


对于 Unix 类型的终端,Ctrl-D 通常是 termios VEOF 字符,并且在终端处于规范输入模式时不会传递到标准输入。在这种情况下,在行首键入 Ctrl-D 字符将scanf看到文件结束条件,但它需要位于行首,而不是像您的示例中那样位于行的中间。因此,您可能需要在 Ctrl-D 之前键入回车,以便从scanf早期返回。

您可以检查返回值,scanf看它是否读取了所需数量的输入值,如果返回值不正确,则结束程序。


推荐阅读