今天一个朋友让我写一个小程序,其中有一个功能:指定文件名时,从文件名中读取数据;没有指定文件名时,从标准输入中读取数据。
平时经常使用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;
}
朋友要求写一个小程序,指定文件名时从文件读取数据,未指定则从标准输入读取。作者熟悉Unix类系统的输入数据方式,利用输入输出重定位功能实现该程序,并给出了具体代码。

被折叠的 条评论
为什么被折叠?



