[問題] argc < 1是什麼意思?(附100p)

作者: huhunhiaccc (chchch)   2021-06-04 16:25:46
大家好
小弟想請問以下程式碼的第三第四行
argc應該是命令列中參數的數目
不過至少也會有./a吧 這樣就1個了
為甚麼argc會小於1 有甚麼其他用法呢
若第三行if成立了 那第四行的stdin又從哪來呢
還希望各位大大能幫小弟解惑 感激不敬
int main(int argc, char *argv[]) {
FILE* fin;
if (argc < 1) {
fin = stdin;
}
else {
~~~~~
}
}
作者: nh60211as   2021-06-04 16:43:00
https://stackoverflow.com/a/58654146/11947017然後你應該要加上#include <stdio.h>才會有FILE跟stdin的定義https://en.cppreference.com/w/c/io/std_streams^stdin 的介紹
作者: huhunhiaccc (chchch)   2021-06-04 17:04:00
所以是1程式開啟2程式的意思嗎,fin=stdin,所以我要在2程式中將我要讀的檔案存到stdin中 是這個意思嗎
作者: nh60211as   2021-06-04 17:06:00
大概吧
作者: huhunhiaccc (chchch)   2021-06-04 17:16:00
100p已發 感謝喔!
作者: LPH66 (-6.2598534e+18f)   2021-06-04 19:00:00
不是"存到 stdin 中", 你講反了stdin 是一個 FILE*, 對其使用 f 系列讀檔函式會從標準輸入讀取輸入, 相對於 fopen 開檔獲得的 FILE* 是讀取該檔案然後, 既然是這種程式碼我猜寫的人搞錯了你 ~~~~~ 省略的地方我猜有 fopen(argv[1], ...)那這樣平常沒參數時 argc == 1 就會壞掉了
作者: huhunhiaccc (chchch)   2021-06-05 12:23:00
請問stdin一般不是用鍵盤輸入嗎@@如果用scanf可以嗎
作者: LPH66 (-6.2598534e+18f)   2021-06-05 22:47:00
這種寫法就是想用一個函數吃兩邊設好之後只要對 fin 讀檔, 那不管來源在標準輸入還是檔案都可以用; 你當然可以用不帶 f 的函數去讀但就要寫一堆 if

Links booklink

Contact Us: admin [ a t ] ucptt.com