【发布时间】:2017-11-16 02:19:44
【问题描述】:
我有一个小项目要为学校做。我们有一个生成迷宫的程序。 我们可以输入参数来生成不同的迷宫,甚至可以将其作为图片。
我们这样称呼它:
./测试
或
./test --arg1 val --arg2 val --etc
我们被要求将参数解析为我们放入标准输入的文件,如下所示:
./test
现在我必须能够使用上述每一行调用程序。带参数的那行有效,带有 stdin 程序的那行有效,但没有任何东西的那行不再有效。
所以我应该检查用户是否在标准输入中发送了一些文件,我用文件调用程序,否则我用正常方式调用它。我尝试使用 feof,但它无法工作,因为 stdin 甚至在 eof 中都没有任何内容。 当我在没有参数或文件的情况下调用程序时,它会等待用户写一些它不应该写的东西。
基本上我的代码应该是这样的
int main()
{
int v;
if (stdin!=NULL)) { //if a file has been passed "./test <test.txt"
scanf("%d",&v);
}
else { //if no files has been passed "./test "
printf("no file forwarded \n");
return 1;
}
if (v<50) {
printf("you drive slow\n");
}
else {
printf("you drive fast\n");
}
return 0;
}
但显然(stdin != NULL) 不起作用。那么有没有办法检查标准输入是否有东西?
我问了我的同学,其中一个告诉我有关使用 fgetc 获取第一个 char 然后如果真的有 char 则将其放回但是当我尝试使用 fgetc 时,如果没有 char 则等待我放一个字符输入。
那么我如何检查标准输入是否为空或其中是否有文件(不使用新库)?
提前谢谢你 祝你有美好的一天
如果我不完全清楚,请告诉我,我不是母语人士,我有一些困难,因为这是一个技术问题
【问题讨论】:
-
许多希望从文件中读取参数的程序将@filename 作为打开该文件名的参数。
标签: c