Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

sscanf

문자열에서 형식 지정된 데이터 읽기

설명

예제

A = sscanf(str,formatSpec)str에서 데이터를 읽어 들여 formatSpec으로 지정된 형식에 따라 변환한 후 결과를 배열로 반환합니다. str은 문자형 배열이나 string형 스칼라입니다. sscanf 함수는 str의 끝에 도달하거나 formatSpec과 일치하는 부분을 찾을 수 없을 때까지 formatSpecstr의 일련의 문자에 반복적으로 적용합니다. str이 행이 두 개 이상 있는 문자형 배열이면 sscanf는 문자를 열 순서로 읽습니다.

예제

A = sscanf(str,formatSpec,sizeA)는 출력 배열의 크기가 sizeA가 되도록 설정한 다음 str의 데이터를 출력 배열로 읽어 들입니다. sizeA는 양의 정수이거나 [m n] 형식이어야 합니다. 여기서 mn은 양의 정수입니다.

예제

[A,n] = sscanf(___)sscanfA로 읽어 들이는 데 성공한 요소의 개수를 반환합니다.

예제

[A,n,errmsg] = sscanf(___)sscanf가 데이터를 모두 A로 읽어 들이지 못한 경우 오류 메시지를 포함하는 문자형 벡터를 반환합니다. sscanf가 모든 데이터를 성공적으로 읽어 들인 경우에는 errmsg에 빈 문자형 벡터가 반환됩니다.

예제

[A,n,errmsg,nextindex] = sscanf(___)str에서 sscanf가 스캔한 마지막 문자 바로 다음에 오는 위치에 대한 인덱스를 반환합니다.

예제

모두 축소

공백 문자로 분리된 여러 숫자를 나타내는 문자형 벡터를 만듭니다. 문자형 벡터를 숫자로 구성된 열 벡터로 변환합니다. sscanf는 공백 문자를 숫자 사이의 구분 기호로 처리합니다.

chr = '2.7183  3.1416  0.0073'
chr = 
'2.7183  3.1416  0.0073'
A = sscanf(chr,'%f')
A = 3×1

    2.7183
    3.1416
    0.0073

여러 숫자를 나타내는 string형을 만든 다음, sscanf를 사용하여 변환합니다. 출력 배열의 크기를 지정합니다.

R2017a부터는 큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str = "2.7183  3.1416  0.0073"
str = 
"2.7183  3.1416  0.0073"
A = sscanf(str,'%f',[1 3])
A = 1×3

    2.7183    3.1416    0.0073

str을 2×2 행렬로 변환합니다. str은 3개 숫자만 나타내므로 sscanf는 행렬을 채울 수 있도록 0으로 A를 채웁니다.

A = sscanf(str,'%f',[2 2])
A = 2×2

    2.7183    0.0073
    3.1416         0

공백 문자로 분리된 숫자를 포함하는 string형을 만듭니다. sscanf가 이 string형을 숫자로 변환할 때 출력 배열에 넣는 요소들의 개수를 구합니다.

R2017a부터는 큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str = "78 72 64 66 49"
str = 
"78 72 64 66 49"

출력 배열 A의 요소 개수를 구합니다. %d 연산자를 사용하여 string형에 있는 숫자를 변환합니다. %d는 공백으로 분리된 정수와 일치합니다. A의 요소 개수를 반환하려면 두 번째 출력 인수를 지정하십시오.

[A,n] = sscanf(str,'%d')
A = 5×1

    78
    72
    64
    66
    49

n = 5

string형을 만든 다음, 이 string형에서 데이터를 읽습니다. sscanf가 입력 string형을 모두 변환하지 못한 경우 오류 메시지를 표시합니다.

R2017a부터는 큰따옴표를 사용하여 string형을 생성할 수 있습니다.

str = "3.14159 are the first 6 digits of pi"
str = 
"3.14159 are the first 6 digits of pi"

str에 포함된 숫자를 변환합니다. str%f가 일치시킬 수 없는 문자가 있기 때문에, sscanf는 오류 메시지를 반환합니다. sscanf는 숫자로 변환할 수 없는 단어 'are'가 발견되는 즉시 처리를 중지합니다.

[A,n,errmsg] = sscanf(str,'%f')
A = 3.1416
n = 1
errmsg = 
'Matching failure in format.'

문자형 벡터를 만든 다음, 이 문자형 벡터의 데이터를 읽습니다. sscanf가 입력값을 모두 변환하지 못한 경우 sscanf는 중지된 위치 바로 다음에 오는 인덱스를 반환합니다. 이 인덱스를 사용하여 스캔되지 않은 입력값을 표시합니다.

chr = '3.14159 are the first 6 digits of pi'
chr = 
'3.14159 are the first 6 digits of pi'

chr의 데이터를 변환합니다. 인덱스를 반환합니다.

[A,~,~,nextindex] = sscanf(chr,'%f')
A = 3.1416
nextindex = 9

chr에서 sscanf가 스캔하지 않은 문자를 표시합니다.

chr(nextindex:end)
ans = 
'are the first 6 digits of pi'

여러 온도(도 기호와 문자 F로 표시)가 포함된 string형을 만듭니다. 이 온도를 숫자형 배열로 변환합니다.

R2017a부터는 큰따옴표를 사용하여 string형을 생성할 수 있습니다. 도 기호(char(176))를 삽입하려면 insertBefore 함수를 사용하십시오.

T = "78F 72F 64F 66F 49F";
degreeSymbol = char(176);
T = insertBefore(T,'F',degreeSymbol)
T = 
"78°F 72°F 64°F 66°F 49°F"

온도를 숫자형 배열로 반환합니다.

A = sscanf(T,strcat("%d",degreeSymbol,"F"))
A = 5×1

    78
    72
    64
    66
    49

입력 인수

모두 축소

스캔할 입력 텍스트로, 문자형 배열 또는 string형 스칼라로 지정됩니다. str이 문자형 배열이면 여러 개의 행이 있을 수 있으며 sscanf는 문자를 열 순서로 읽습니다.

데이터형: char | string

입력 필드의 형식으로, 형식 지정 연산자를 사용하여 지정됩니다. formatSpec은 작은따옴표로 묶인 문자형 벡터이거나 string형 스칼라일 수 있습니다.

숫자형 필드

이 표에는 텍스트를 숫자형 출력값으로 변환하는 데 사용 가능한 변환 지정자가 나와 있습니다. sscanf 함수는 십진수(10진법) 표현으로 값을 변환합니다.

숫자형 필드 유형

변환 지정자

설명

정수, 부호 있음

%d

10진법입니다.

%i

값에 따라 다음과 같이 진법이 결정됩니다.

  • 디폴트 값은 10진법입니다.

  • 시작 숫자가 0x 또는 0X인 경우 값은 16진법(16진수)이 됩니다.

  • 시작 숫자가 0인 경우 값은 8진법(8진수)가 됩니다.

%ld 또는 %li

64비트 값으로, 10진법, 8진법 또는 16진법입니다.

정수, 부호 없음

%u

10진법입니다.

%o

8진법(8진수)입니다.

%x

16진법(16진수)입니다.

%lu, %lo, %lx

64비트 값으로, 10진법, 8진법 또는 16진법입니다.

부동소수점 숫자

%f, %e, %g

부동소수점 값입니다. 입력 필드는 다음 중 하나를 포함할 수 있습니다(대소문자를 구분하지 않음). Inf, -Inf, NaN 또는 -NaN 부동소수점 숫자를 나타내는 입력 필드에는 선행 + 또는 - 기호와, e 또는 E를 사용한 지수 표기법이 포함될 수 있습니다. 변환 지정자 %f, %e, %g는 입력 필드를 모두 같은 방식으로 처리합니다.

문자형 필드

이 표에는 텍스트를 문자형 배열 출력값으로 변환하는 데 사용 가능한 변환 지정자가 나와 있습니다.

문자형 필드 유형

변환 지정자

설명

문자형 벡터 또는 string형 스칼라

%s

공백이 나올 때까지 sscanf 함수가 텍스트를 읽습니다.

%c

공백을 포함하여 단일 문자를 읽습니다.
한 번에 여러 문자를 읽으려면 필드 너비를 지정해야 합니다. 예를 들어, %10c는 한 번에 문자를 10개 읽습니다.

패턴 일치

%[...]

일치하지 않는 문자나 공백이 처음 나타날 때까지 대괄호에 있는 문자만 읽습니다.

예: %[mus]'summer ''summ'으로 읽습니다.

formatSpec에 숫자 지정자와 문자 지정자가 조합되어 있다면 sscanf 함수는 각 문자를 그에 상응하는 숫자로 변환합니다.

선택적 연산자

  • 필드 및 문자 무시

    특정 필드 또는 필드의 부분을 무시하도록 지정하지 않을 경우 sscanf 함수는 순차적으로 모든 숫자형 값과 문자를 읽습니다. 필드를 건너뛰려면 퍼센트 기호(%) 뒤에 별표(*)를 삽입하십시오. 예를 들어, 정수를 건너뛰려면 %*d를 지정하십시오.

  • 필드 너비

    한 번에 읽을 최대 숫자 또는 텍스트 문자 개수를 지정하려면 퍼센트 문자 다음에 숫자를 추가해야 합니다. 예를 들어, %10c는 공백을 포함하여 한 번에 10개의 문자를 읽고, %4f는 소수점을 포함하여 한 번에 최대 4개의 숫자를 읽습니다.

  • 리터럴 텍스트 무시

    sscanf 함수는 변환 지정자 바로 앞이나 뒤에 지정된 텍스트를 무시합니다.

    예: Level%u'Level1'1로 읽습니다.

    예: %uStep'2Step'2로 읽습니다.

데이터형: char | string

출력 배열 A의 차원으로, 양의 정수 Inf 또는 요소를 2개 가진 행 벡터로 지정됩니다.

sizeA 입력값의 형식

설명

Inf

입력값을 끝까지 읽습니다.
숫자형 데이터의 경우 A는 열 벡터가 됩니다.
텍스트 데이터의 경우 A는 문자형 벡터가 됩니다.

n

최대 n개의 숫자형 값 또는 공백으로 구분된 문자형 필드를 읽습니다.
숫자형 데이터의 경우 A는 열 벡터가 됩니다.
텍스트 데이터의 경우 A는 문자형 벡터가 됩니다.

[m n]

최대 m*n개의 숫자형 값 또는 문자형 필드를 읽습니다. nInf일 수 있지만 m은 Inf일 수 없습니다. A는 열 순서대로 데이터가 채워진 m×n 배열이됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

출력 데이터로, 열 벡터, 행렬 또는 문자형 배열로 반환됩니다. A의 클래스와 크기는 다음과 같이 formatSpec으로 지정된 변환과 sizeA로 지정된 출력 배열의 크기에 따라 달라집니다.

  • formatSpec에 숫자 지정자만 포함된 경우 A도 숫자형 열 벡터가 됩니다. sizeA 인수를 지정한 경우 A는 지정된 크기의 행렬이 되고, 필요한 경우 0으로 채워집니다. 입력값에 포함된 값의 개수가 sizeA보다 적으면 A의 크기는 sizeA보다 작습니다. 이 값은 입력값에서 스캔된 값을 저장하는 데 필요한 크기입니다.

    • formatSpec에 64비트의 부호 있는 정수 지정자만 포함된 경우 Aint64 클래스가 됩니다.

    • formatSpec에 64비트의 부호 없는 정수 지정자만 포함된 경우 Auint64 클래스가 됩니다.

    • 그렇지 않으면, Adouble형 클래스가 됩니다.

  • formatSpec%c 지정자 또는 %s 지정자만 포함된 경우 A는 문자형 벡터가 됩니다. sizeA를 지정한 경우 A 는 문자형 배열이 되며 필요에 따라 null 문자로 채워집니다. null 문자는 그 값이 0인 제어 문자입니다. 입력값에 포함된 문자의 개수가 sizeA보다 적으면 A의 크기는 sizeA보다 작습니다. 이 값은 입력값에서 스캔된 문자를 저장하는 데 필요한 크기입니다.

  • formatSpec에 숫자 지정자와 문자 지정자가 조합되어 있다면 Adouble형 클래스 숫자이고, sscanf 함수는 각 문자를 그에 상응하는 숫자로 변환합니다. 이러한 변환은 formatSpec이 명시적으로 모든 숫자형 필드를 건너뛰도록 지정된 경우에도 발생합니다(예: formatSpec'%*d %s'인 경우).

  • sscanf에서 입력값 모두를 formatSpec과 일치시킬 수 없을 경우 A는 숫자형 또는 문자형 배열이 될 수 있습니다. A의 클래스는 처리를 중지하기 전에 sscanf 함수가 읽은 값에 따라 달라집니다.

데이터형: double | int64 | uint64 | char

출력 배열로 읽어 들인 요소 개수로, 정수로 반환됩니다.

데이터형: double

오류 메시지로, 문자형 벡터로 반환됩니다. strsscanf가 변환할 수 없는 데이터가 포함되어 있으면 errmsg에 오류 메시지가 포함됩니다. sscanf가 모든 데이터를 성공적으로 변환한 경우에는 errmsg에 빈 문자형 벡터가 반환됩니다.

데이터형: char

스캔한 마지막 문자 다음 위치로, 정수로 반환됩니다.

데이터형: double

  • 읽기 함수 sscanffscanf에 대한 형식 지정자는 쓰기 함수 sprintffprintf에 대한 형식과 다릅니다. 읽기 함수에서 정밀도 필드는 지원되지 않습니다. 너비 필드는 쓰기를 위한 최솟값은 지정하지만 읽기를 위한 최댓값은 지정하지 않습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨