今天一个朋友让我写一个小程序,其中有一个功能:指定文件名时,从文件名中读取数据;没有指定文件名时,从标准输入中读取数据。
平时经常使用Unix类操作系统,对这种输入数据的方式非常熟悉(比如:sort命令)。但还是第一次写该程序。
这里面用到了输入输出重定位的功能,比如ls > dirdata,这就是把stdout的内容重定向到文件中了。
用程序实现也非常容易。
#include <stdio.h>
#include <stdlib.h>
void useage(const char *buf)
{
fprintf(stderr, "Useage: %s [file]", buf);
exit(1);
}
int main(int argc, char *argv[])
{
int a;
FILE *fp;
if (argc > 2)
useage(argv[0]);
if (argc == 2)
{
fp = fopen(argv[1], "r");
if (fp == NULL)
{
perror("*** ERROR");
exit(1);
}
*stdin = *fp;
}
scanf("%d", &a);
printf("The input is %d/n", a);
fclose(fp);
return 0;
}