看板 C_and_CPP 關於我們 聯絡資訊
大家好 小弟想請問以下程式碼的第三第四行 argc應該是命令列中參數的數目 不過至少也會有./a吧 這樣就1個了 為甚麼argc會小於1 有甚麼其他用法呢 若第三行if成立了 那第四行的stdin又從哪來呢 還希望各位大大能幫小弟解惑 感激不敬 int main(int argc, char *argv[]) { FILE* fin; if (argc < 1) { fin = stdin; } else { ~~~~~ } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.241.212.216 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1622795148.A.F54.html ※ 編輯: huhunhiaccc (116.241.212.216 臺灣), 06/04/2021 16:26:35 ※ 編輯: huhunhiaccc (116.241.212.216 臺灣), 06/04/2021 16:26:43
nh60211as: 然後你應該要加上#include <stdio.h>才會有 06/04 16:46
nh60211as: FILE跟stdin的定義 06/04 16:46
nh60211as: ^stdin 的介紹 06/04 16:48
huhunhiaccc: 所以是1程式開啟2程式的意思嗎,fin=stdin,所以我 06/04 17:04
huhunhiaccc: 要在2程式中將我要讀的檔案存到stdin中 是這個意思 06/04 17:04
huhunhiaccc: 嗎 06/04 17:04
nh60211as: 大概吧 06/04 17:06
huhunhiaccc: 100p已發 感謝喔! 06/04 17:16
LPH66: 不是"存到 stdin 中", 你講反了 06/04 19:00
LPH66: stdin 是一個 FILE*, 對其使用 f 系列讀檔函式會從標準輸入 06/04 19:01
LPH66: 讀取輸入, 相對於 fopen 開檔獲得的 FILE* 是讀取該檔案 06/04 19:02
LPH66: 然後, 既然是這種程式碼我猜寫的人搞錯了 06/04 19:12
LPH66: 你 ~~~~~ 省略的地方我猜有 fopen(argv[1], ...) 06/04 19:13
LPH66: 那這樣平常沒參數時 argc == 1 就會壞掉了 06/04 19:13
huhunhiaccc: 請問stdin一般不是用鍵盤輸入嗎@@如果用scanf可以嗎 06/05 12:23
LPH66: 這種寫法就是想用一個函數吃兩邊 06/05 22:47
LPH66: 設好之後只要對 fin 讀檔, 那不管來源在標準輸入還是檔案 06/05 22:48
LPH66: 都可以用; 你當然可以用不帶 f 的函數去讀但就要寫一堆 if 06/05 22:48