[问题] 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