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을 2x2 행렬로 변환합니다. 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는 열 순서대로 데이터가 채워진 mxn 배열이됩니다.

데이터형: 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 이전에 개발됨