c++ - 程序未运行输入文件

标签 c++ linux

这是我的代码:

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

并将这些数字插入到名为“tin1.in”的文件中。并尝试使用命令在终端中运行:

/.proj tin1.in

如果我手动输入,它可以完美运行,但是当我尝试自动运行时,它不会执行任何操作,它似乎会永远运行。有什么想法吗?

最佳答案

您的程序“不执行任何操作”,因为它已运行到 scanf行并被阻止等待从命令终端接收标准输入。

./proj tin1.in只设置 argv 的“第一个”元素到“tin1.in”。

此参数不会自动打开文件tin1.in并阅读它。由您的程序来读取和解析 argv并解释参数的含义并打开文件或采取其他操作,但[我假设]您的程序不包含任何执行此操作的代码,因此 tin1.in 不会发生任何事情。信息。

类unix操作系统中有一种内置的方法来重定向stdin。如果您希望将 stdin 重定向到文件,则需要使用命令 ./proj <tin1.in 运行 proj或cat tin1.in | ./prog正如评论中推荐的那样。

关于c++ - 程序未运行输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431777/

相关文章:

c++ - 在 C++ 中取消引用该指针是否有效?

c++ - 无法使用 'designFlags' 类型的右值初始化 'int' 类型的变量

linux - grep -c 不工作

Linux 脚本在文件中插入新行

linux - 如何在 Linux 上运行 Dartium?

c - linux fcntl 文件锁定超时

c++ - 为什么++(* p)更改指针值?

c++ - 配置 uncrustify 以添加大括号

c++ - 如何使用 Visual Studio 2017 在 Windows 上构建 OpenSSL?

linux - 套接字可视化工具