一.控制程序的输入输出
c语言编写的小工具,操作系统会为其分配三条数据流:一个标准输入,一个标准输出,一个标准错误输出。
1.用户也可以通过编写代码控制输入输出的数据流数量
2.用户可通过操作系统的命令设置输入输出目标是屏幕还是文件,是键盘还是文件
1.c语言标准输入输出(标准错误输出)
fprintf(stdout,"xxxx"); 等价于printf("xxxx");
stdout是标准输出数据流
stderr时标准错误输出数据流
fscanf(stdio, "xxxx"x &x); 等价于scanf("xxxx", &x);
stdio是标准输入数据流
2.控制输入输出的数据流的数量
FILE * 数据流的名字 =fopen("输入文件的名字", "r"); FILE * 数据流的名字 =fopen("输入文件的名字", "w"); FILE * 数据流的名字 =fopen("输入文件的名字", "a");
fopen()函数创建新的数据流
w,r,a,参数对应的是读,写,追加
用完数据流需要关闭
fclose(数据流的名字);
一个进程最多有256条数据流
3.fgets函数的使用
fgets函数功能为从指定的流中读取数据,每次读取一行。
char food[5]; printf("Enter favorite food:"); fgets(food, 5, stdin); food[strlen(food) - 1]='\0';
fgets括号里面内容的意思:food(字符数组的名字),sizeof(food)接收字符的最大长度,stdin数据来自键盘
必须要搭配food[strlen(food) - 1]='\0';此句,将用户输入的有效字符的最后一位赋值为\0。
与scanf比较,此函数可以让用户输入含有空格的字符串
4.用操作系统命令控制输入输出的目标
1.c语言写的小工具在linux(类unix)系统上面利用数据流重定向来定义输入输出文件错误输出文件的实例
./小工具 <需要输入的文件 >输出的文件名 2>标准错误输出文件(不加这一项,则错误输出会输出到屏幕)
在小工具的c程序中,标准错误输出的返回值设置为2,所以将2引流入标准错误输出
2.利用管道符号将多个c语言写的小工具的标准输入和标准输出连接的实例
(1程序 | 2程序) <输入文件 > 输出文件
二.编写代码让用户可以设置参数及选项
1.编写代码让用户可以设置参数
让用户通过命令设置输出文件的名字,以及参数
int main (int xxx, char * xxx[])
给main函数增加形参,用来接收用户输入的文件名字及参数
其中xxx为变量名
2.编写代码让用户可以设置选项
库函数getopt()的使用
该函数头文件为:# include <unistd.h>
编写代码让用户可以设置参数
getopt(键盘接收的参数数量,键盘接收的字符串参数,"xx:")
x代表程序选项
:代表该选项有参数,默认使用optarg指向这个参数
还需要设置
xxxx -= optiond;
xxxx += optiond;
其中xxx为变量名