バッファ
バッファは二つのタイプに分けられます。
- 完全にバッファ:それが空になる(コンテンツが先に送信された)バッファがいっぱいになったとき
- ライン・バッファ:出会い改行文字バッファがクリアされます
終了キーボード入力
ファイル、ストリーム、およびキーボード入力
低レベルI / Oは、システムの違いによるファイルを処理するために、ホストオペレーティングシステムの基本的なツールを使用することで、一般的な低レベルのI / O標準ライブラリを確立することはできません。従ってCは、で使用される標準I / Oパッケージ、より高いレベル、特定の実現Cを処理するシステムとの間の差、標準インタフェースの等価物を提供します
概念的には、Cプログラムファイルをストリームを扱うのではなく、直接。
ストリーム(流れ)は理想的な実際の入力または出力データにマッピングされたストリームデータのストリームであります
、キーボード入力がストリームSTDINによって参照された記憶装置上の同じファイルを扱うためのCの治療入出力デバイス共通これは、画面上の出力はSTDOUTストリームによって表される前記しました
ファイルの終わり
2つの方法でファイルの検出端:
- 文書での終わりをマークする特殊文字を配置します
- ストアのファイルサイズ情報にオペレーティングシステムを許可します
Cでの統一的なアプローチ:ファイルの終わりを検出する方法に関係なく、オペレーティングシステムの、GETCHAR機能は、それが特別な値EOFの終わりに到達したファイルを返してみよう
リダイレクトとファイル
方法で動作するようにプログラムやファイルを作成します。
- クローズファイルを開くには明示的に使用し、ファイル、ファイル、書き込みファイル、およびその他の特別な機能を読んで
- プログラムは、一緒に、キーボードとスクリーン作業で使用するために設計されたが、リダイレクト入力と出力に異なるチャネルを使用し、ファイルに交代STDINストリームへの程度であります
入力のリダイレクト
<
UNIXは、番組ガイドに、ファイルの内容をストリームを標準入力一緒にリダイレクト演算子であり、ファイルの関連付け、プログラム自体が入力を気にしないキーボードやファイルからのものです
出力のリダイレクト
>
ファイルから標準出力に表示デバイスのリダイレクト、ファイルが既に存在する場合、通常はファイルを削除し、新しいファイルに置き換えます
リダイレクト組み合わせ
注意:
- 順序は無関係リダイレクト演算子であります
- 同じコマンドで同じ入力および出力ファイル名を使用しないでください
- 入力ファイルと出力ファイルにのみ可能
- 別の実行可能なプログラム・データ・ファイルとの接続のためにのみ
- スペースが必要とされていません
より多くのユーザーフレンドリーなインターフェイスを作成します。
混合は、数字や文字を入力してください
各文字GETCHARが読ん以来、デジタルscanf関数の読み取りがスペース、タブ、改行をスキップする一方getchar関数やscanfはよく、混合していません
入力確認
scanf関数の入力に失敗した場合、入力キュー内のエラーの残りの入力は、この時間はGETCHARに文字で入力された文字を読むことができます
入力検証の典型的な例:
int get_int(void){
int input;
char ch;
while(scanf("%d",&input)!=1){//如果输入不成功,则进入循环
while((ch=getchar())!='\n'){//getchar逐个读取输入的字符
putchar(ch);//剔除错误输入
}
}
return input;
}