[Powered by Google Translate] TOMMY:在這個視頻中,我們將了解 重定向和管道。 到目前為止,我們一直在使用的功能,如printf來 輸出到終端的數據和功能類似的GetString 以允許用戶提供輸入到我們的 程序中使用的鍵盤。 讓我們趕緊來看看一個程序,得到了行 來自用戶的輸入,然後將其輸出。 在第7行,我們提示用戶輸入一個字符串,並 然後在第8行,我們要打印退了出去。 讓編譯和運行我們的程序。 大。 我們所提供的字符串被回 我們在終端。 這是因為printf函數寫信給 流稱為標準輸出,S-T-D-OUT。 當事情寫入到標準輸出,默認情況下, 顯示由該終端。 所以,這一切都很好,但如果,而不是簡單地 顯示字符串,我們希望將它保存到一個文件? 例如,我們可能要記得正是我們的 程序的時候,我們給了它一個特定的輸入後。 有一種方法可以做到這一點在我們的C程序中,使用 寫入文件的一些特殊功能,我們將 看到在另一個視頻。 雖然,更容易,以某種方式將 重定向標準輸出到一個文件中。 這樣一來,當printf寫入到stdout,其內容將 被寫入文件,而不是 顯示由該終端。 我們可以做到這一點,添加一個大於號, 一個文件名,命令,我們執行我們的程序。 因此,而不是簡單地執行。/重定向,我們可以 運行。/重定向,一個大於號, 名,例如file.txt的。 讓我們看看會發生什麼。 OK。 請注意,這時候,什麼也沒有顯示在終端上, 但我們並沒有修改的內容,我們 在所有的C程序。 現在,讓我們來檢查使用ls這個目錄的內容。 好的。 我們現在有一個新的名為file.txt的文件,在我們的目錄, 這是我們提供的文件名,當我們運行我們的 重定向程序。 讓我們打開file.txt的。 在這裡,我們可以看到,標準輸出重定向 寫入文件名為file.txt的。 因此,讓我們再次運行前面的命令,但提供一個 不同的輸入時間。 好吧。 讓我們來看看在file.txt的。 在這裡,我們可以看到該文件已被覆蓋,所以我們 原來的輸入是不存在了。 如果我們不是要追加到這個文件,把新的 輸入下面的現有文件的內容,我們可以 使用兩個大於符號,而不是只有一個。 讓我們試試吧。 現在,如果我們再次打開file.txt的,我們可以看到我們的 輸入線。 在某些情況下,我們可能要放棄任何 輸出我們的計劃。 而不是寫輸出到一個文件,然後刪除 我們已經完成了它的文件時,我們可以寫一個特殊的 文件名為/ dev / null的。 什麼是寫入/ dev/null-- 或只是devnull短 - 它被自動丟棄。 因此,認為devnull的黑洞,為您的數據。 所以,現在我們已經看到了如何用大於號可以重定向 標準輸出,讓我們看看如何可以重定向標準 - 或s-叔的d - 標準輸出的模擬。 雖然功能同於printf寫的流稱為 從流中讀取標準輸出,的GetString和類似功能 稱為stdin,默認情況下,是流 在鍵盤上輸入的字符。 使用小於號,我們可以重定向標準輸入, 一個文件名。 現在,而不是在提示用戶輸入 終端,程序將打開我們指定的文件,並使用 它的線條作為輸入。 讓我們看看會發生什麼。 大。 的第一行file.txt的已印到終端 因為我們調用GetString的一次。 如果我們有另一個在我們的程序中調用GetString的, file.txt的下一行已被用來作為 輸入到該呼叫。 同樣,我們沒有改變我們的C程序在所有。 我們只是改變了我們運行它。 還記得,我們​​沒有重定向標準輸出時間, 所以輸出的程序的時間是仍 顯示在終端上。 當然,我們可以都重定向標準輸入 和stdout是這樣的。 現在,file2.txt包含file.txt的的第一行。 因此,使用這些運營商,我們已經能夠閱讀和 寫文本文件。 現在,讓我們來看看如何,我們可以使用一個程序的輸出 另一個程序的輸入。 因此,這裡是另一個簡單的C程序,我 這裡有名為hello.c。 正如你可以看到,這只是輸出“嗨, 那裡!“給用戶。 如果我想重定向到使用作為輸入輸出的Hello - 另一種方案 - 我可以先輸出重定向到一個文件名為hello的 INPUT.TXT,然後重定向標準輸入重定向到相同的 文件 - INPUT.TXT。 所以我可以做。/你好INPUT.TXT。 按Enter鍵執行。 其次/重定向< INPUT.TXT,並執行它。 因此,我們可以縮短這個有點用分號,這使得 我們在同一行上運行兩個或多個命令。 所以我可以說,。/你好INPUT.TXT,分號, /重定向 final.txt。 所以,如果我們打開了final.txt的,我們有什麼,我們 尋找: 唯一的名稱按字母順序排列的列表, 保存到一個文本文件中。 順便說一下,我們也可以說排序< students.txt | uniq的final.txt做到底 同樣的事情,我們已經看到在使用每個運營商 這部影片。 我的名字是湯米,這是CS50。