技術共有

C言語 - printf、scanf、その他の入出力関数

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

printf関数

1.printf関数の一般的な形式:


printf 関数の一般的な形式は printf (形式制御、出力リスト) です。
例えば:

printf("%d,%cn",i,c);

(1)「フォーマットコントロール」

二重アポストロフィで囲まれた文字列で、「変換制御文字列」、略して「フォーマット文字列」と呼ばれます。これには次の 2 つの情報が含まれます。
①フォーマットステートメント。フォーマット宣言は、「%」と、%d、%f などのフォーマット文字で構成されます。出力データを指定された形式に変換して出力する機能です。フォーマット宣言は常に「%」文字で始まります。

その中で、 d は 10 進数の整数を表し、 c は単一の文字を表し、 s は複数の文字を表し、 f は 10 進数を表し、 x は 16 進数形式での出力を表し、 p は印刷メモリ アドレスを表し、これも 16 進数形式で出力されます。変数アドレス演算記号&。
②普通のキャラクター。通常の文字は、出力時に変更せずに出力する必要がある文字です。たとえば、上記の printf 関数の二重カンマ内のカンマ、スペース、改行には、他の文字を含めることもできます。


(2)「出力テーブル列」

これはプログラムが出力する必要があるデータであり、定数、変数、または式の場合があります。

注記:
(1) 強制変換:整数を小数に変換
  1. int data = 10;
  2. int chushu = 3;
  3. float result;
  4. result = (float)data/chushu;
(2) データ幅と小数点以下の桁数を指定します。%m.nf を使用します。
「%7.2」形式は、出力データが小数点以下 2 桁を含む 7 列を占めることを指定するために使用されています。下一桁は四捨五入、つまり近似値を上または下に切り上げます。如来が小数部を0と指定した場合、小数点が出力されないだけでなく、小数点も出力されません。したがって、安易に小数点以下の桁数を 0 に指定しないでください。
(3) %-m.nf を使用して、出力データを左揃えにします。
m と n の前にマイナス記号を追加すると、基本的には %m.nf 形式と同じ効果になりますが、データ長が m を超えない場合、データは左に移動され、右端はスペースで埋められます。

scanf関数

1.scanf関数の一般形式


scanf (フォーマット制御、アドレステーブル列)

「フォーマット制御」の意味はprintf関数と同じです。 「アドレス テーブル列」は、変数のアドレスまたは文字列の最初のアドレスなど、複数のアドレスで構成されるテーブル列です。


2.scanf関数でサウンドをフォーマットする


printf 関数のフォーマット宣言と同様に、% で始まりフォーマット文字で終わり、途中に追加の文字を挿入できます。
scanf 関数は次の形式に書き換えることができます。

scanf("a=%f,b=%f,c=%f",&a,&b,&c);


書式宣言 %f に加えて、書式指定文字列には通常の文字 (「a=」、「b=」、「,」など) も含まれます。

注記:

(1)住所記号&

scanf 関数の「フォーマット制御」の後には、変数名ではなく変数アドレスを指定する必要があります。たとえば、a と b が整数変数の場合、次のように記述すると、

scaní("%f%f%f",a,b,c);

間違っている。 「a,b,c」を「&a,&b,&c」に変更する必要があります。多くの初心者がこの間違いを犯します。

(2)そのまま入力

「書式制御文字列」に書式宣言以外の文字がある場合は、データ入力時にそれらの文字と同じ文字を対応する位置に入力してください。もしあるなら

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

データを入力するときは、対応する位置に同じ文字を入力する必要があります。つまり入力
a=1,b=3,c=2(入力内容に注意)

したがって、scanf にスペースやカンマ、その他の記号を追加せずに (スペースがある場合は改行入力を使用しても問題ありません)、必要な入力データを直接書き出すだけです。

scanf("%d%d%f",&data,&data1,&data2);
(3) 文字入力

入力文字を「%c」形式で宣言する場合、スペース文字と「エスケープ文字」内の文字は有効な文字として入力されます。次に例を示します。
 

scanf("%c%c%c,&c1,&c2,&c3);

この機能を実行するときは、スペースを入れずに連続した 3 文字を入力する必要があります。
2 つの文字の間にスペースを挿入するのは間違いです。

スペースや改行も文字です。入力時にスペースや改行は使用できません。

(4) 混合入力

数値データを入力する際に​​、スペース、キャリッジリターン、Tab キーを入力したり、不正な文字 (数値に属さない文字) を入力したりすると、データは終了したものとみなされます。例えば:
 

scanf("%d%c%f,&a,&b,&c);

正しい入力は次のとおりです: 1234h7.6

最初のデータは %d 形式に対応します。1234 を入力すると、文字「h」が出現します。そのため、システムは値 1234 の後に数字がないと判断します。最初のデータはここで終わるはずなので、1234 が変数に送信されます。 a.後続の文字 'h' を文字変数 b に送信します。%c は 1 文字の入力のみを必要とするため、システムは文字の入力が終了したと判断し、入力文字 ' の後にスペースを追加する必要はありません。はぁ。文字「h」の後の値は変数 c に送信される必要があります。うっかり「1230.26」を「123o.26」と入力してしまった場合、123の後に「o」が表示されるため、ここで数値データが終了したとみなされ、以降の文字は読み込まれません。

したがって、異なるタイプのデータを入力する場合は、タイプごとに対応する scanf 関数を作成する必要があります。いくつかのタイプに対応する scanf 関数があります。

(5) 複数のscanf関数

プログラム内に複数の scanf 関数が含まれる場合、後者の scanf 関数は前の scanf 関数の入力後の改行文字を自分の入力とみなしてしまうため、後者の scanf 関数は入力を正常に取得できなくなるため、必ず使用する必要があります。 2 つの scanf 関数の間に、余分な改行文字を吸収するために getchar() を挿入します。

その他の入出力関数:

put: printf との違い
(1) 自動的に改行を追加します。
(2).printf はさまざまな出力パターンをサポートしており、puts は出力文字列です。

getchar、putchar

インプットとアウトプットの演習:

1. 大文字を入力し、小文字を出力します

ここでは、大文字に対応する ASCII コード + 32 が小文字に対応する ASCII コードになります。

したがって、コード例は次のとおりです

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char a;
  5. char b;
  6. printf("请输入一个大写字母:");
  7. scanf("%c",&a);
  8. b = a+32;
  9. printf("其对应的小写字母为:%c",b);
  10. return 0;
  11. }