一.控制程序的輸入輸出
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為變量名