原文: Format Specifiers in C (freeCodeCamp.org)

翻訳・翻案: Manabu Matsumoto

書式指定子は、標準出力に表示されるデータの型を定義します。printf() で書式が設定された出力を表示する場合、または scanf() で入力を受け付ける場合に、書式指定子を使用する必要があります。

標準 C の中で使用できる、書式指定子をいくつか以下に示します:

指定子 用途
%c 文字
%s 文字列
%hi short 型 10 進整数 (符号付き)
%hu short 型 10 進整数 (符号無し)
%Lf long double 型浮動小数点数
%n 表示は何も行わず整数変数に出力済みもしくは入力済み文字数を格納
%d 10 進符号付き整数 (基数が 10)
%i 符号付き整数 (基数を自動的に検出)
%o 8進符号無し整数 (基数が 8)
%x 16進符号無し整数 (基数が 16)
%p アドレス (または ポインタの値)
%f (小数形式) 浮動小数点数
%u 10 進符号無し整数
%e 指数形式浮動小数点数
%E 指数形式浮動小数点数 (指数記号は大文字 E)
%% % 記号

例:

書式指定子 %c による文字の出力:

#include <stdio.h> 

int main() { 
  char first_ch = 'f'; 
  printf("%c\n", first_ch); 
  return 0; 
} 

出力:

f

書式指定子 %s による文字列の出力:

#include <stdio.h> 

int main() { 
  char str[] = "freeCodeCamp"; 
  printf("%s\n", str); 
  return 0; 
} 

出力:

freeCodeCamp

書式指定子 %c による文字の入力:

#include <stdio.h> 

int main() { 
  char user_ch; 
  scanf("%c", &user_ch); // user inputs Y
  printf("%c\n", user_ch); 
  return 0; 
} 

出力:

Y

書式指定子 %s による文字列の入力:

#include <stdio.h> 

int main() { 
  char user_str[20]; 
  scanf("%s", user_str); // user inputs fCC
  printf("%s\n", user_str); 
  return 0; 
} 

出力:

fCC

書式指定子 %d および %i による符号付き整数の出力:

#include <stdio.h> 

int main() { 
  int found = 2015, curr = 2020; 
  printf("%d\n", found); 
  printf("%i\n", curr); 
  return 0; 
} 

出力:

2015
2020

書式指定子 %f および %e による浮動小数点数の出力:

#include <stdio.h>

int main() { 
  float num = 19.99; 
  printf("%f\n", num); 
  printf("%e\n", num); 
  return 0; 
}

出力:

19.990000
1.999000e+01

書式指定子 %o による 8 進符号無し整数の出力:

#include <stdio.h> 

int main() { 
  int num = 31; 
  printf("%o\n", num); 
  return 0; 
}

出力:

37

書式指定子 %x による 16 進符号無し整数の出力:

#include <stdio.h> 

int main() { 
  int c = 28; 
  printf("%x\n", c); 
  return 0; 
} 

出力:

1c