【发布时间】:2021-10-06 22:29:39
【问题描述】:
这是用 C 语言编写的流行 bash 命令cat。
我不知道这条线是做什么的:
if (argc==1) return cat(stdin), 0;
我以前从未见过这样的事情。这是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void cat(FILE *f)
{
int c;
while (EOF != (c = getc(f)))
{
if (EOF == putchar(c))
{
perror("cat");
return;
}
}
if (ferror(f))
{
perror("cat");
return;
}
}
int main(int argc, char **argv)
{
if (argc==1) return cat(stdin), 0;
for(int i=1; i<argc; i++)
{
if (!strcmp("-", argv[i]))
{
cat(stdin);
continue;
}
FILE *f = fopen(argv[i], "r");
if (!f)
{
perror("cat");
continue;
}
cat(f);
fclose(f);
}
return 0;
}
if (argc==1) return cat(stdin), 0; 行有什么作用?
【问题讨论】:
-
我已编辑您的问题以使其更清晰。