gpt4 book ai didi

c - 从文本文件读取输入

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:41 26 4
gpt4 key购买 nike

我编写了一个简单的 C 程序,它使用类似于以下的代码从用户那里获取输入:

printf("Please enter number one: ");
scanf("%i", &numberOne);
printf("Please enter number two: ");
scanf("%i", &numberTwo);
...

当程序运行时这一切工作正常 - 提示用户输入,每个输入提示出现在单独的行上(大概是因为用户按下 Return 键表示他们已经完成了在前一行的输入).例如:

Please enter number one:
Please enter number two:

但是,当我使用 ./myProgram < inputText.txt 将文本文件重定向到程序作为输入(用于测试)时所有输入提示都出现在一行中,我猜是因为没有按下 Return 键,因为所有输入都来自文本文件:

Please enter number one: Please enter number two:

是否可以让提示各占一行?

感谢您的帮助!

最佳答案

当程序以交互方式运行时,用户输入会在屏幕上回显。当您将标准输入重定向到程序中时,不会回显该输入。因此,为了在后一种情况下而不是前一种情况下获得换行符,您必须检测这种情况并根据您从哪里获得输入来做一些不同的事情。

值得庆幸的是,如果您使用的是 POSIX 系统,这并不是很难。添加:

#include <unistd.h>

然后在每个 scanf 之后添加:

if (!isatty(STDIN_FILENO))
printf("\n");

这会检查标准输入是否连接到终端。如果不是(例如,如果它是来自文件的重定向输入),它会打印一个换行符。

关于c - 从文本文件读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15515133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com