[英]Program not running input file
這是我的代碼:
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
信息不會發生任何tin1.in
。
在類Unix操作系統中有一種內置的方法可以重定向stdin。 如果希望將stdin重定向到文件,則需要使用命令./proj <tin1.in
或cat tin1.in | ./prog
運行proj cat tin1.in | ./prog
cat tin1.in | ./prog
如注釋中所建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.