C 从文本文件读取输入
我编写了一个简单的C程序,它使用类似以下代码从用户处获取输入:C 从文本文件读取输入,c,scanf,C,Scanf,我编写了一个简单的C程序,它使用类似以下代码从用户处获取输入: printf("Please enter number one: "); scanf("%i", &numberOne); printf("Please enter number two: "); scanf("%i", &numberTwo); ... 当程序运行时,这一切都可以正常工作-提示用户输入,每个输入提示出现在单独的一行上(可能是因为用户点击回车键表示他们已在前一行完成输入)。例如: Please en
printf("Please enter number one: ");
scanf("%i", &numberOne);
printf("Please enter number two: ");
scanf("%i", &numberTwo);
...
当程序运行时,这一切都可以正常工作-提示用户输入,每个输入提示出现在单独的一行上(可能是因为用户点击回车键表示他们已在前一行完成输入)。例如:
Please enter number one:
Please enter number two:
但是,当我使用/myProgram
将文本文件重定向到程序中作为输入(用于测试)时,所有输入提示都显示在一行上,我猜测是因为没有按下返回键,因为所有输入都来自文本文件:
Please enter number one: Please enter number two:
提示是否可能出现在各自的行中
谢谢你的帮助 您可以在
scanf
之后打印换行符,以获得更漂亮的打印输出。副作用是,在输入时,您将看到额外的空行
printf("Please enter number one: ");
scanf("%i", &numberOne);
printf("\n");
printf("Please enter number two: ");
scanf("%i", &numberTwo);
printf("\n");
...
当程序以交互方式运行时,用户输入将在屏幕上回响。当您将标准输入重定向到程序中时,不会回显该输入。因此,为了在后一种情况而不是前一种情况下获取换行符,您必须检测该情况,并根据您从何处获取输入来执行不同的操作 谢天谢地,如果您使用的是POSIX系统,那么这并不难。加:
#include <unistd.h>
这将检查标准输入是否连接到终端。如果不是(例如,如果它是来自文件的重定向输入),它将打印一个换行。谢谢。我之前已经尝试过你的建议,并且在手动输入时得到了额外的空行-我希望尽可能避免出现这种情况…非常感谢,这很完美:)我也做了修改,现在它是
printf(“%I\n”,numberOne)
,这样它也会将文件中的输入回显到屏幕上。
if (!isatty(STDIN_FILENO))
printf("\n");