std:: scanf, std:: fscanf, std:: sscanf
|
헤더 파일에 정의됨
<cstdio>
|
||
|
int
scanf
(
const
char
*
format, ...
)
;
|
(1) | |
|
int
fscanf
(
std::
FILE
*
stream,
const
char
*
format, ...
)
;
|
(2) | |
|
int
sscanf
(
const
char
*
buffer,
const
char
*
format, ...
)
;
|
(3) | |
다양한 소스에서 데이터를 읽어와서 format 에 따라 해석하고 결과를 지정된 위치에 저장합니다.
목차매개변수
format 문자열은 다음으로 구성됩니다:
사용 가능한 형식 지정자는 다음과 같습니다:
반환값성공적으로 할당된 수신 인수의 개수(첫 번째 수신 인수가 할당되기 전에 일치 실패가 발생한 경우 0일 수 있음), 또는 EOF 첫 번째 수신 인수가 할당되기 전에 입력 실패가 발생한 경우. 복잡도
보장되지 않습니다. 특히 일부 구현에서는
참고 사항대부분의 변환 지정자는 먼저 연속된 모든 공백을 소비하기 때문에, 다음과 같은 코드는 std::scanf("%d", &a); std::scanf("%d", &b); 서로 다른 줄에 입력된 두 정수를 읽을 것입니다(두 번째 % d 가 첫 번째 입력 후 남은 개행 문자를 소비함) 또는 같은 줄에 공백이나 탭으로 구분된 두 정수를 읽을 것입니다(두 번째 % d 가 공백이나 탭을 소비함). The conversion specifiers that do not consume leading whitespace, such as % c , can be made to do so by using a whitespace character in the format string:std::scanf("%d", &a); std::scanf(" %c", &c); // %d 이후의 개행 문자를 무시하고 문자 하나를 읽습니다
일부
예제
이 코드 실행
#include <clocale> #include <cstdio> #include <iostream> int main() { int i, j; float x, y; char str1[10], str2[4]; wchar_t warr[2]; std::setlocale(LC_ALL, "en_US.utf8"); char input[] = "25 54.32E-1 Thompson 56789 0123 56ß水"; // 다음과 같이 파싱: // %d: 정수 // %f: 부동소수점 값 // %9s: 최대 9개의 공백이 아닌 문자로 이루어진 문자열 // %2d: 두 자리 정수 (숫자 5와 6) // %f: 부동소수점 값 (숫자 7, 8, 9) // %*d: 어디에도 저장되지 않는 정수 // ' ': 모든 연속된 공백 // %3[0-9]: 최대 3자리 숫자 문자열 (숫자 5와 6) // %2lc: 멀티바이트에서 와이드 문자로 변환하여 두 개의 와이드 문자 const int ret = std::sscanf(input, "%d%f%9s%2d%f%*d %3[0-9]%2lc", &i, &x, str1, &j, &y, str2, warr); std::cout << "Converted " << ret << " fields:\n" "i = " << i << "\n" "x = " << x << "\n" "str1 = " << str1 << "\n" "j = " << j << "\n" "y = " << y << "\n" "str2 = " << str2 << std::hex << "\n" "warr[0] = U+" << (int)warr[0] << "\n" "warr[1] = U+" << (int)warr[1] << '\n'; } 출력: Converted 7 fields: i = 25 x = 5.432 str1 = Thompson j = 56 y = 789 str2 = 56 warr[0] = U+df warr[1] = U+6c34 참고 항목
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||