这是我的代码:
int i,u,v = 0;
scanf("%d%d",&N,&M );
Edge.resize(N+1);
for( i=1;i<=M;i++){
scanf("%d%d",&u,&v );
Edge[u].push_back( v );
}
所以,我正在阅读我输入的输入。例如:
6 7
1 2
1 3
2 4
3 5
4 5
5 6
3 4
但为了更容易输入,我已编译了我的文件。
g++ -O3 -ansi -Wall main.cpp -lm -o proj
并将这些数字插入名为:&#34; tin1.in&#34;的文件中。并尝试使用命令在终端中运行:
/.proj tin1.in
如果我手动输入,它可以很好地工作,但是当我尝试自动运行时,它似乎没有做任何看似永远运行的事情。有什么想法吗?
答案 0 :(得分:0)
你的节目&#34;什么都不做&#34;因为它已经运行到scanf
行并被阻止等待从命令终端接收标准输入。
./proj tin1.in
仅设置&#34;第一个&#34; argv
到&#34; tin1.in&#34;。
此参数不会自动打开文件tin1.in
并读取它。由您的程序来读取和解析argv
并解释参数的含义和打开文件或采取其他操作,但[我假设]您的程序不包含任何代码来执行此操作,因此{ {1}}信息。
在类似unix的操作系统中有一种内置方式可以重定向stdin。如果您希望将stdin重定向到文件,则需要使用注释中建议的tin1.in
或./proj <tin1.in
命令运行proj。