Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 1.45 KB

sscanf.md

File metadata and controls

56 lines (41 loc) · 1.45 KB

sscanf

  • cstdio[meta header]
  • std[meta namespace]
  • function[meta id-type]
namespace std {
  int sscanf(const char* buffer, const char* format, ...);
}

概要

書式を指定して文字列領域から入力する。

bufferが指すヌル終端文字列を入力元として、fscanf()と同じ規則で解析を行う。

戻り値

代入に成功した項目の数を返す。最初の変換が行われる前に入力が終端に達した場合はEOFを返す。

備考

  • %sや%[による文字列の読み込みでは、書き込み先の大きさが考慮されない。書式指定に最大フィールド幅(%31sなど)を指定しない場合、バッファオーバーランを起こしうる
  • 数値の解析には、std::from_chars()(C++17)やstd::stoi()(C++11)などの、より安全な代替手段がある

例

#include <cstdio>

int main()
{
  const char* input = "2026-09-08";

  int year = 0;
  int month = 0;
  int day = 0;
  int count = std::sscanf(input, "%d-%d-%d", &year, &month, &day);

  std::printf("%d: %d/%d/%d\n", count, year, month, day);
}
  • std::sscanf[color ff0000]
  • std::printf[link printf.md]

出力

3: 2026/9/8

関連項目