c - 处理文件或标准输入
问题描述
我正在创建一个处理档案的小程序;像这样运行:
"./program file.txt".
如果没有找到第二个参数,它将从标准输入处理
"cat file.txt | ./program"
但在代码中......我知道我可以做到这一点:
if (argc==2){
FILE* archive = argv[1];
function_1(archive);
function_2(archive);
...
function_n(archive);
else{
function_1(stdin);
function_2(stdin);
...
function_n(stdin);
}
但无论如何我可以这样做吗?
file* archive;
if (argc==2){
archive = argv[1];
else{
archive = stdin;
}
function_1(archive);
function_2(archive);
...
function_n(archive);
因为我想写更少的代码!
解决方案
由于stdin
是 type 的变量FILE *
,因此您可以这样做:
FILE *archive;
if (argc==2){
archive = fopen(argv[1], "r");
else{
archive = stdin;
}
推荐阅读
- html - 如何使 CSS 样式在 Safari 浏览器中工作?
- google-sheets - 查找与字符串的部分匹配
- iis - SSAS 数据泵 - 找不到 IsapiModule
- python - 在模拟期间更新 matplotlib 图
- angular - 新选项卡目标空白 url 在 Chrome 和 IE 中打开,但在 Microsoft Edge 中不打开
- python-3.x - 如何使用 .insert 方法向列表添加值
- javascript - NodeJS 类总是返回 undefined
- robotframework - 机器人框架。等到关键字成功 5m 10s {keyword {keyword {keyword}}}
- c++ - 用于 QT/C++ 开发的 QTCreator 的免费替代品
- python - BufferError:本地:Python 中的队列已满