キーボード入力と画面出力C言語

プログラム動作の簡単なシーケンシャル構造を記述するとき、キーボード入力や画面出力は、最も一般的に使用されています。キーボード入力と画面出力実装入力/出力機能を呼び出すことにより、Cプログラムです。この章では、一般的な入力/出力機能について説明します。
単一文字の入力/出力
1文字定数
C言語における文字の文字定数は、単一引用符で囲まれています。例えば、「」文字定数、識別子です。3の整数を示しながら再び、「3」、文字定数を表します。
実際には、ほとんどの印刷可能な文字の一重引用符の組の文字ではなく、(例えば、キャリッジ・リターン、改行など)、特定の制御文字のために。このように、C言語では、特定の記述の目的のために、特定の意味を持ち始め、にバックスラッシュ(\)文字列である文字定数エスケープ文字(エスケープ文字)、別の特殊な形式を紹介します制御文字は、単一引用符の内側に置くために同じを使用しています。使用エスケープ文字'\ n'は、 '\ tと '。
次の表に文字テーブルを脱出。

意味文字意味文字
「\ n」は改行「\」警報ベル音
「\ r」がキャリッジ(折り返されません)「\「」二重引用符
、一般的に、文字列フラグのエンドとして使用『\ 0』ヌル文字を' \「」単一引用符
「\ t」の水平タブ「\」バックスラッシュ
「\ V」垂直タブ「?」疑問符
「\ B」バックスペース「\ DDD」1。3桁のオクタルASCII値を表し、文字
給紙F「\」文字「\ xhh」で表される1から2桁の16進ASCII値

例えば、文字プログラム例「N \」関わる以前の章、次のラインの放送の開始位置に、すなわち、ラインフィードプロセス制御出力に使用されるエスケープ文字の一種です。そして、は「\ n」は、「\ r」が異なる、キャリッジリターン、ラインフィードが、現在のラインの放送開始位置に移動しようとしないと述べました。そして、は「\ t」の水平タブは、TABキーを押すと同等。
場合、文字列のエスケープシーケンスは、単一の文字カウントに基づいています。また、注目に値することです。文字「は」\ n「は1つの文字を表すので、例えば、文字列の長さは、「ABC \ n」は4、5ではないです。
文字変数が一つだけバイトのメモリ空間を占め、そのので、それだけで一つの文字を格納することができます。文字可変範囲は、コンピュータシステムで使用される文字セットに依存します。現在、広くASCIIで使用されているコンピュータ上の文字が(情報交換用米国標準コード)文字セット(文字テーブルには、ソフトウェアを参照する場合があります)。これはすなわち、文字列の各文字コードに対応する文字セットを指定し、「シリアル番号」。すなわち、各文字は、対応する整数に等しい値を有し、この整数値は、文字のASCIIコードです。この意味からは、char型は特殊なint型とみなすことができます。
整数は、メモリにバイナリ形式で格納され、メモリはまた、店舗に対応するASCIIコードのバイナリ形式の文字です。例えば、文字「A」は、そのASCIIコード65のバイナリ値を、65と同様整数記憶フォーマット、それによって占有されるメモリのバイト数が異なるメモリに格納されます。charデータ型は1バイトです。
ASCIIコードの範囲、チャーのデータ型とint型データ変換情報が失われないで、両者は混合操作であってもよいです。これと同時に、出力形式にCHARデータ型文字の両方が、整数形式で出力することができ、出力形式は、その進ASCIIコード整数値に直接出力されます。
2.文字入力/出力
GETCHAR()のputchar()は、文字の入力/出力に専用C標準ライブラリ関数です。putcharマクロアクション機能は()現在の放送画面の文字位置に出力されます。アクション関数getchar関数()インクルードは、入力の終わりを示すために、Enterキーを押して、文字を入力するための入力デバイス(エンド約キーボード)システムから暗黙的に指定され、文字を読んで、自動的に画面に表示されます。
[11.1]キーボード入力大文字の場合は、それ小文字に変換され、画面に現実です。
【課題共通のASCII文字セットの付録Dを観察するための分析を解決するには、32大対応する大文字よりもそのような法律、すなわち、ASCII値小文字のASCII値、すなわち、「A」と「A」に見出すことができます、 'B'および'B'、 'C'及び'C'が......差分値は32 ASCIIコードです。この法則によれば、それは簡単に小文字の間で変換することができます。手順は以下の通りである:
の#include「stdio.hの」
ボイドメイン()
{
チャーCH;
のprintf(「押しA、次いでプレスキー入力:」);
CH = GETCHAR(); / 文字からキーボード入力、キーを押して完了します、変数CHに文字 /
CH = CH + 32; / 大文字小文字に変換 /
のputchar(CH); / ディスプレイの大画面上の変数CH文字 /
のputchar( '\ N-'); / 出力Aキャリッジリターン改行制御文字は、 /
}
次のようにプログラムの実行結果は以下のとおりです。
キーとを押してEnterキーを押します:Bの
Bの
プログラム文を最初の6行目は、(関数getchar関数を呼び出します)、次に文字が読み込まれ、キーボードから文字を入力関数getchar関数()文字値を変数CHに割り当てられて返されます。関数の戻り値は、端末のキーボード文字から読み出され、パラメータはありません関数GETCHAR()ことに留意されたいです。このように、声明は次のように記述されるべきではない:
getchar関数(CH); / 間違った使用 /
変数の大文字プラス32、の7行目の文CHのASCII値は、対応する小文字を与えるためにASCII値、文字変換を小文字に大文字を達成するためです。文字「」文字「」減算、また文字「B」と文字「B」に対応し、文字「」文字「」減算するASCIIコードに対応するので、ASCIIコードを減算され... ...と両者の差が32であるので、ライン7と文を以下の文は等価で引く;
CH = CH +(「A」 - 「A」);
線8文は(putcharマクロを呼び出し)端子へ表示文字の画面でCH出力現在のカーソル位置は、putcharマクロは()も、エスケープ文字であってもよいし、キャラクタがいずれかの印刷可能な文字であり、文字から出力されるパラメータです。
第二に、フォーマット画面出力データ
関数のprintf()形式は、通常
のprintf(フォーマット制御文字列);
のprintf(フォーマット制御文字列は、出力値は、パラメータテーブルです)。
制御文字列形式(フォーマットストリング)もコンバータ制御文字列として知られている二重引用符で囲まれた文字列であり、パラメータテーブルの出力値は、出力値が複数ない(出力のみの文字列)を有していてもよいです。フォーマット変換仕様(形式指定子)と必要な出力として通常の文字:一般的に、フォーマット制御文字列は、2つの部分から構成されています。表4-2に示すように、フォーマット変換%が始まると、パラメータの各出力値は、出力形式を指定するために使用された文字の変換(変換文字)で終了示します。
共通関数のprintf()フォーマット変換記載の
フォーマット変換は、の使用を実証
%dの出力の符号付き10進整数を、正の符号が省略され
%のC出力は、文字
%sの出力列
%fは、小数点形式の小数で実数を出力
%%出力百分率第%%

出力値に必要なデータ項目のリストは、パラメータテーブルから出力され、可変出力データ項目はまたは発現、パラメータの出力値との間のカンマで区切られ、タイプ及びフォーマット変換指定が一致しなければならないことができます。パラメータテーブルの各出力フォーマット変換仕様パラメータ値と入力されたシンボル値1に対応し、パラメータの値は、文字列の書式制御指定子フォーマット変換が不要になった出力はありません。
[実施例4.2]大文字は、小文字に変換し、キーボードからの入力、小文字はASCIIコードの10進値を変換して画面に表示されます。
#include「stdio.hの」
ボイドメイン()
{
チャーCH;
のprintf(「押しA、次いでプレスキーを入力してください」);
CH = GETCHAR(); / 文字からキーボード入力、キーを押して文字を完了します変数CHに /
/; CH = CH + 32 大文字を小文字に変換 /
のputchar(CH); / 大画面の表示変数CH文字 /
のprintf( "%のC、%D \ N-"、CH、 CH);
}
次のようにプログラムの実行結果は、次のとおり
Bの:プレスは、次に、とEnterキーを押す
B、98
次のように実行します。
プログラムに比べて出力のputchar文字、文字出力(にフォーマットされた出力関数のprintf()関数)関数のprintf()を使用し、実施例11.1の手順と比較して、両方の文字形式(%のC)の利点でありますそれは小数点形式(%d)は値の整数とすることができる出力char型の変数(例えば、プログラムは、行8に示されています)。小数点形式(%のD)の整数で出力するときASCIIコードchar型の変数の出力値です。ここでは、次の2つのステートメントの効果は同等です。
printf( "%のC"、CH);
のputchar(CH);
そして次の2つのステートメントの役割は等価です。
(「\ N-」)のprintf
;のputchar(「\ N-」)
3、キーボード入力データ形式
の一般的なフォーマット1関数のscanf()
のscanf(制御文字列形式、パラメータアドレステーブル);
前記フォーマット制御文字ストリングは、フォーマット変換命令を含む、二重引用符文字列で囲まれ、そして2つの部分をデリミタれます。関数のscanf()フォーマット変換指定子(表4-4)%が通常開始され、指定する文字形式で終わる各パラメータ入力形式。
フォーマット変換を使用する例示
%のD入力進整数
%のC入力文字(スペース、キャリッジリターン、タブを含む)空白文字であるが有効な文字
、スペース、キャリッジリターン、タブなど%sの入力文字列に遭遇する空白文字(ときオペレータ)は、システムが最後だと思い読み込みます。
%F入力実数、または小数指数入力ができ
%%パーセント出力%%

パラメータアドレスリストを、これらのパラメータは、カンマで区切られ、いくつかの変数からなるアドレスのリストです。関数のscanf()は、データを読み取ることができないか、メモリセルが正しく指定、データを受け取る変数の必要なアドレスを指定する必要があります。
2のフォーマット修飾関数のscanf()
同様のprintf()、%で、中間フォーマッタ関数のscanf()形式の改質も挿入することができます。
数値データ入力のscanf()関数、我々は次のような状況は、データエントリ終了すると考えられる遭遇:
スペース、キャリッジリターン、タブ(TAB)の場合、Lは
、Lは、入力されたフィールド幅に達し、
不正な文字入力のL場合。
関数のscanf()フォーマット制御文字列の形式は文字以外の間のプレゼンス文字を記載した場合にデータを入力する際に、キャラクタは、ユーザによって、キーボードから入力しなければならない、ということに注意してください。
[実施例4.4]入力データの関数のscanf()のフォーマット要件を実証するために使用される手順に従います。
#include "stdio.hの"
ボイドメイン()
{
int型A、B、
scanfの( "%のDの%のD"、A&、&B);
のprintf( "%のA = D、B = D%\ N-"、A、B );
}
必要なプログラム出力が= 12、ときに34件のB =、どのようにユーザーの入力データである場合?
:ライン5内の2つのフォーマット変換プログラム文は通常の文字として、説明文字間のスペースであるため、ユーザ入力は、すなわち、空間データとの間のセパレータとして入力する必要があるとき、それは入力しなければなりません。したがって、この場合、入力データは、次の形式によれば、
12 34
入力データは次の形式で定義されている場合、カンマ区切りにユーザ入力データを定義する、すなわち、これは、プログラムステートメントで変更しなければなりませんか?どのように変更できますか?
12,34
A:カンマで区切られた入力データとの間で必要な場合には、カンマで区切る必要があり、すなわち、2つの修飾フォーマット変換指定子間べきプログラム文の行5
scanf関数(「%のDは、%D 」、&、&B)
場合、以下のように修正されたプログラム文の行5文、どのようにユーザ入力データ?
初心者のための一般的な間違いであるデータ変数を、受信するアドレスを指定するには、前述の変数に加えて、関数のscanf()アドレス演算子を使用するときに取ることを忘れ。
一般的なエラーエラー説明エラーのタイプの一般的な例
のprintf( "入力A:");
のprintf( "入力A:");.のprintf()誤ってプリント()またはのprintf()リンクエラーとして書き込ま
のprintf(「入力:) ;
scanfの(%Dを」;、&A)エラーコンパイル引用符でフォーマット制御文字列内のprintf()やscanf関数()のを忘れ
、(、%のD "&A)scanfの"を
"、A =%のDのprintf(" a)は、コンパイルエラー内に書かれたカンマ区切りフォーマット制御文字列式とフォーマット制御文字列
scanfの(「%dの」、A ); (scanfのを忘れ)アドレス警告追加するためのプロンプトで変数
のprintf( 「A =%dは\ nが」 ); エラー出力可変パラメータランタイム書くのを忘れ
のscanf(「%の2F」、 ;&C) に入るときに実データ精度ランタイムエラーフォーマット制御文字列が指定のscanf()とを

おすすめ

転載: blog.csdn.net/SqrsCbrOnly1/article/details/91361750