初次本版發文有不妥的地方請指正
在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就創不出來也不會報錯
請問是出了什麼問題或是有什麼關鍵字可以找嗎?
謝謝
作者: jerryh001 2019-10-16 09:33:00
不是<>而是<和>兩件事 <file表示stdin改成從file來 >file表示stdout改成從file出去
直接存取 stdin & stdout,這兩個 FILE 一開始就會先開好
google "redirect 重導向 linux"
stdin & stdout 就當作鍵盤輸入、螢幕輸出即可
真的非常感謝各位的指點 原來我一開始思考方向就錯了... 感覺在學校的linux白學了(掩面)
fopen可以建立檔案但是不會建立資料夾,你可以先用boost::filesystem先把資料夾建好