作者roger840410 (roger)
看板C_and_CPP
標題[問題] linux下執行c的命令參數問題
時間Wed Oct 16 09:30:44 2019
初次本版發文有不妥的地方請指正
在linux下用gcc編譯./執行
作業要求把txt檔案的每行照字母排序後輸出新的txt
基本上寫完沒問題
但我卡在兩個地方
1.
命令行
./sort < old.txt > /tmp/new.txt
在sort.c中要怎麼引用這個old.txt?
我本來想用fopen取得argv的導入文件名但失敗
我寫個迴圈把argv[]裡面的東西印出來
但只有argv[0]是 ./sort 後面全是不相干的東西
把命令行的<>拿掉argv[1] argv[2]就正常=命令參數了(old.txt 和/tmp/new)
但作業要求不能動.sh檔案也就是不能改命令
而且亂打測試發現./sort < old.txt > abcdefg
會生成一個abcdefg檔案 內容是程式中printf結果(就不會顯示在terminal裡了)
請問
命令行的文件名用
尖括號刮起來有什麼特別意義嗎?
2.
用fopen生成單個
new.txt沒問題
但加上資料夾路徑/tmp/new.txt就創不出來也不會報錯
請問是出了什麼問題或是有什麼關鍵字可以找嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 31.205.252.179 (英國)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1571189446.A.E79.html
推 jerryh001: 不是<>而是<和>兩件事 <file表示stdin改成從file來 >fi 10/16 09:33
→ jerryh001: le表示stdout改成從file出去 10/16 09:33
推 Bencrie: 直接存取 stdin & stdout,這兩個 FILE 一開始就會先開好 10/16 09:37
→ x246libra: google "redirect 重導向 linux" 10/16 09:41
推 Schottky: stdin & stdout 就當作鍵盤輸入、螢幕輸出即可 10/16 09:46
→ roger840410: 真的非常感謝各位的指點 原來我一開始思考方向就錯 10/16 09:50
→ roger840410: 了... 感覺在學校的linux白學了(掩面) 10/16 09:50
推 Schottky: 你只是沒玩過 UVa 而已 (拍拍) 10/16 12:07
推 Bencrie: 呃 ... Windows 也是一樣啊 10/17 01:44
→ eye5002003: fopen可以建立檔案但是不會建立資料夾,你可以先用 10/23 12:40
→ eye5002003: boost::filesystem先把資料夾建好 10/23 12:41