出力関数scanf()使用メモ

2353 ワード

本編はC Primer Plusより抜粋
scanf()はprintf()と同様に、フォーマット文字列やパラメータリストも使用されます.scanf()のフォーマット文字列は、文字入力ストリームのターゲットデータ型を示す.2つの関数の主な違いはパラメータリストにあります.printf()関数は変数、定数、式を使用し、scanf()関数は変数を指すポインタを使用します.
変換の説明
意味
%c
入力を文字に解釈する
%d
入力を符号付き10進数整数に解釈する
%o
入力を符号付き8進整数に解釈する
%x  %X
入力を符号付き16進整数に解釈する
%s
入力を文字列として1番目の空白以外の文字から始まり、次の空白文字まですべての文字が入力されます.
%p
入力をポインタに解釈する
%u
入力を符号なし10進法に解釈する
変換の説明
意味
*
抑制賦値
数値
フィールドの最大幅.入力が最大フィールド幅に達した場合、または1回目に空白文字が発生した場合に停止します.
%c以外の変換説明子は、入力する値の前の空白を自動的にスキップします. 
  •  %d変換は整数を読み出し、scanf()関数は1文字ずつ読み出し、すべての空白文字をスキップすることを示します.最初の空白以外の文字に遭遇するまで読み取りを開始します.scanf()関数は、数値文字または記号(+または-)を見つけたいです.数値または記号が見つかった場合は、その文字を保存し、次の文字を読み込みます.数値以外の文字に遭遇すると、整数の末尾に読み出されたと考えられます.scanf()は非デジタル文字を入力に戻します.つまり、プログラムが次に入力を読み出すときに、まず最初に読み出されるのは、プログラムが最後に読み捨てた非デジタル文字である.
  • 最初の空白以外の文字が数字ではなくAである場合、scanf()はそこに停止し、Aを入力に戻し、指定した変数に値を割り当てません.プログラムの次の読み込み入力時に最初に読み出されるのは文字Aです.
  • #include
    
    int main(int argc, char const *argv[])
    {
    	int n = 100;
    	char m;
    	printf("Please enter a number or character.
    "); scanf("%d",&n); scanf("%c",&m); printf("%d
    ", n ); printf("%c
    ", m ); return 0; }

    入力はスペース+12+A、出力は下図です.
    Please enter a number or character.
     12A
    12
    A
           . . .

    入力はA、出力は下図 .
    Please enter a number or character.
    A
    100
    A
           . . .
  •  scanf()関数では、通常の文字をフォーマット文字列に配置できます.スペース文字列を除く通常の文字列は、入力文字列と厳密に一致する必要があります.
  • 形式の文字列の空白は、次の入力項目の前のすべての空白をスキップすることを意味します.
  • 	    scanf("%d,%d", &n, &m); //       88,121
    	    scanf("%c",&ch);        //      1        
    	    scanf(" %c",&ch);       //  1          
  • scanf()関数の*の使い方. *を%と変換文字の間に置くと、scanf()は対応する出力項目をスキップします.
  • 	#include
    
    	int main(int argc, char const *argv[])
    	{
    		int n;
    		printf("Please enter three integers:
    "); scanf("%*d %*d %d", &n); printf("The last integer was %d
    ", n ); return 0; }
    Please enter three integers:
    2012 2013 2014
    The last integer was 2014
           . . .