C の書式指定子

C の形式指定子は、入出力操作で印刷またはスキャンされるデータのタイプをコンパイラーに伝えるために使用されます。それらは常に a で始まります % シンボルであり、printf()、scanf、sprintf() などの関数の書式設定された文字列で使用されます。

C 言語には、int の %d、char の %c など、さまざまなデータ型に関連付けられた多数の書式指定子が用意されています。この記事では、一般的に使用されるいくつかの書式指定子とその使用方法について説明します。

C の書式指定子のリスト

以下の表には、C で最も一般的に使用される形式指定子が含まれています。

フォーマット指定子

説明

%c

キャラクタータイプについて。

%d

符号付き整数型の場合。

%e または %E

浮動小数点の科学的表記法に使用します。

%f

フロートタイプの場合。

%g または %G

現在の精度の float 型の場合。

%私

符号なし整数

%ld または %li

長さ

%lf

ダブル

%Lf

ロングダブル

%lu

unsigned int または unsigned long

%lli または %lld

長い長い

%llu

符号なしの長い長い

%O

8 進数表現

%p

ポインタ

%s

%で

符号なし整数

%x または %X

16 進数表現

%n

何も印刷しない

%%

% 文字を出力します

C の形式指定子の例

1. 文字形式指定子 – C の %c

%c は、 チャー C言語のデータ型。 C 言語でのフォーマットされた入力とフォーマットされた出力の両方に使用できます。

構文:

scanf('  %d  ...', ...); printf('  %d  ...', ...); 

例:

C




// C Program to illustrate the %c format specifier.> #include> int> main()> {> > char> c;> > // using %c for character input> > scanf> (> 'Enter some character: %c'> , &c);> > // using %c for character output> > printf> (> 'The entered character: %c'> , &c);> > return> 0;> }>

入力:

Enter some character: A 

出力:

The entered character: A 

2. 整数形式指定子 (符号付き) – C の %d

符号付き整数形式指定子を使用できます %d scanf() および print() 関数、または入力と出力にフォーマットされた文字列を使用するその他の関数内 整数 データ・タイプ。

構文:

scanf('%d...', ...); printf('%i...', ...); 

例:

C




// C Program to demonstrate the use of %d and %i> #include> // Driver code> int> main()> {> > int> x;> > // taking integer input> > scanf> (> 'Enter the two integers: %d'> , &x);> > // printing integer output> > printf> (> 'Printed using %%d: %d '> , x);> > printf> (> 'Printed using %%i: %3i '> , x);> > return> 0;> }>

入力:

Enter the integer: 45 

出力:

Printed using %d: 45 Printed using %i: 45 

3. 符号なし整数形式指定子 – C の %u

%u は、符号なし整数データ型の形式指定子です。 %u に負の整数値を指定すると、整数が最初の補数に変換されます。

構文:

printf('  %u  ...', ...); scanf('  %u  ...', ...); 

例: 次の C プログラムは、C で %u を使用する方法を示しています。

C




// C Program to illustrate the how to use %u> #include> // driver code> int> main()> {> > unsigned> int> var;> > scanf> (> 'Enter an integer: %u'> , &var);> > printf> (> 'Entered Unsigned Integer: %u'> , var);> > // trying to print negative value using %u> > printf> (> 'Printing -10 using %%u: %u '> , -10);> > return> 0;> }>

入力:

Enter an integer: 25 

出力:

Entered unsigned integer: 25 Printing -10 using %u: 4294967286 

4. 浮動小数点形式指定子 – C の %f

%f C 言語の浮動小数点書式指定子で、入力および出力の書式設定された文字列内で使用できます。 浮く データ・タイプ。 %f とは別に、次を使用できます。 %そうです または %そして を出力するための形式指定子 指数形式の浮動小数点値。

構文:

printf('  %f  ...', ...); scanf('  %e  ...', ...); printf('  %E  ...', ...); 

例:

C




// C program to demonstrate the use of %f, %e and %E> #include> // driver code> int> main()> {> > float> a = 12.67;> > printf> (> 'Using %%f: %f '> , a);> > printf> (> 'Using %%e: %e '> , a);> > printf> (> 'Using %%E, %E'> , a);> > return> 0;> }>

出力

Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01 

5. 整数の符号なし 8 進数 – C の %o

C プログラムで %o 書式指定子を使用すると、符号なし 8 進整数を出力したり入力したりすることができます。

構文:

printf('  %o  ...', ...); scanf('  %o  ...', ...); 

例:

C




#include> int> main()> {> > int> a = 67;> > printf> (> '%o '> , a);> > return> 0;> }>

出力

103 

6. 整数の符号なし 16 進数 – C の %x

%x 書式指定子は、16 進整数の書式設定された文字列で使用されます。この場合、16 進数のアルファベットは小文字になります。大文字のアルファベット数字の場合は、代わりに %X を使用します。

構文:

printf('  %x  ...', ...); scanf('  %X  ...', ...); 

例:

C




// C Program to demonstrate the use of %x and %X> #include> int> main()> {> > int> a = 15454;> > printf> (> '%x '> , a);> > printf> (> '%X'> , a);> > return> 0;> }>

出力

3c5e 3C5E 

7. 文字列形式指定子 – C の %s

C の %s は、文字列を出力したり、文字列を入力として取得したりするために使用されます。

構文:

printf('  %s  ...', ...); scanf('  %s  ...', ...); 

例:

C




// C program to illustrate the use of %s in C> #include> int> main()> {> > char> a[] => 'Hi Geeks'> ;> > printf> (> '%s '> , a);> > return> 0;> }>

出力

Hi Geeks 

例: scanf() を使用した %s の動作は、printf() を使用した動作とは少し異なります。次の C プログラムを使ってこれを理解してみましょう。

C




// C Program to illustrate the working of %s with scanf()> #include> int> main()> {> > char> str[50];> > // taking string as input> > scanf> (> 'Enter the String: %s'> , str);> > printf> (> 'Entered String: %s'> , str);> > return> 0;> }>

入力

Enter the string: Hi Geeks 

出力

Hi 

ご覧のとおり、文字列は空白が検出されるまでのみスキャンされます。を使用することでそれを回避できます C のスキャンセット

8. アドレス形式指定子 – C の %p

C 言語には、アドレス/ポインターを出力するための形式指定子も用意されています。 %p を使用すると、C でアドレスとポインタを出力できます。

構文

printf('  %p  ...', ...); 

例:

C




#include> int> main()> {> > int> a = 10;> > printf> (> 'The Memory Address of a: %p '> ,(> void> *)&a);> > return> 0;> }>

出力

The Memory Address of a: 0x7ffe9645b3fc 

入力および出力のフォーマット

C 言語には、入力と出力をフォーマットできるいくつかのツールが用意されています。これらは通常、% 記号と書式指定子記号の間に挿入されます。その一部は次のとおりです。

  1. マイナス (-) 記号は左揃えを示します。
  2. 後の数字 % 文字が幅のサイズより小さい場合は残りのスペースをスペースで埋め、それより大きい場合は切り詰めずにそのまま印刷する最小フィールド幅を指定します。
  3. ピリオド ( . ) 記号はフィールド幅を正確に区切ります。

精度は、整数の最小桁数、文字列の最大文字数、および浮動小数点値の小数部以降の桁数を示します。

I/Oフォーマットの例

C




// C Program to demonstrate the formatting methods.> #include> int> main()> {> > char> str[] => 'geeksforgeeks'> ;> > printf> (> '%20s '> , str);> > printf> (> '%-20s '> , str);> > printf> (> '%20.5s '> , str);> > printf> (> '%-20.5s '> , str);> > return> 0;> }>

出力

 geeksforgeeks geeksforgeeks geeks geeks 

C フォーマット指定子に関する FAQ

1. C には 2 進数の書式指定子はありますか?

いいえ、C 言語には 2 進数の書式指定子がありません。

2. フォーマットされた文字列とは何ですか?

C の入出力関数は、データを画面に表示する方法、またはデータをメモリに取得する方法を決定する引数として文字列を受け取ります。この文字列はフォーマットされた文字列と呼ばれます。