作者huhunhiaccc (chchch)
看板C_and_CPP
標題[問題] argc < 1是什麼意思?
時間Fri Jun 4 16:25:46 2021
大家好
小弟想請問以下程式碼的第三第四行
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://webptt.com/m.aspx?n=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
2F:→ nh60211as: 然後你應該要加上#include <stdio.h>才會有 06/04 16:46
3F:→ nh60211as: FILE跟stdin的定義 06/04 16:46
5F:→ nh60211as: ^stdin 的介紹 06/04 16:48
6F:→ huhunhiaccc: 所以是1程式開啟2程式的意思嗎,fin=stdin,所以我 06/04 17:04
7F:→ huhunhiaccc: 要在2程式中將我要讀的檔案存到stdin中 是這個意思 06/04 17:04
8F:→ huhunhiaccc: 嗎 06/04 17:04
9F:→ nh60211as: 大概吧 06/04 17:06
10F:→ huhunhiaccc: 100p已發 感謝喔! 06/04 17:16
11F:推 LPH66: 不是"存到 stdin 中", 你講反了 06/04 19:00
12F:→ LPH66: stdin 是一個 FILE*, 對其使用 f 系列讀檔函式會從標準輸入 06/04 19:01
13F:→ LPH66: 讀取輸入, 相對於 fopen 開檔獲得的 FILE* 是讀取該檔案 06/04 19:02
14F:→ LPH66: 然後, 既然是這種程式碼我猜寫的人搞錯了 06/04 19:12
15F:→ LPH66: 你 ~~~~~ 省略的地方我猜有 fopen(argv[1], ...) 06/04 19:13
16F:→ LPH66: 那這樣平常沒參數時 argc == 1 就會壞掉了 06/04 19:13
17F:→ huhunhiaccc: 請問stdin一般不是用鍵盤輸入嗎@@如果用scanf可以嗎 06/05 12:23
18F:→ LPH66: 這種寫法就是想用一個函數吃兩邊 06/05 22:47
19F:→ LPH66: 設好之後只要對 fin 讀檔, 那不管來源在標準輸入還是檔案 06/05 22:48
20F:→ LPH66: 都可以用; 你當然可以用不帶 f 的函數去讀但就要寫一堆 if 06/05 22:48