sscanf
문자열에서 형식 지정된 데이터 읽기
구문
설명
은 A
= sscanf(str
,formatSpec
)str
에서 데이터를 읽어 들여 formatSpec
으로 지정된 형식에 따라 변환한 후 결과를 배열로 반환합니다. str
은 문자형 배열이나 string형 스칼라입니다. sscanf
함수는 str
의 끝에 도달하거나 formatSpec
과 일치하는 부분을 찾을 수 없을 때까지 formatSpec
을 str
의 일련의 문자에 반복적으로 적용합니다. str
이 행이 두 개 이상 있는 문자형 배열이면 sscanf
는 문자를 열 순서로 읽습니다.
는 출력 배열의 크기가 A
= sscanf(str
,formatSpec
,sizeA
)sizeA
가 되도록 설정한 다음 str
의 데이터를 출력 배열로 읽어 들입니다. sizeA
는 양의 정수이거나 [m n]
형식이어야 합니다. 여기서 m
과 n
은 양의 정수입니다.
예제
문자형 벡터를 숫자로 변환하기
공백 문자로 분리된 여러 숫자를 나타내는 문자형 벡터를 만듭니다. 문자형 벡터를 숫자로 구성된 열 벡터로 변환합니다. 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
를 사용하여 변환합니다. 출력 배열의 크기를 지정합니다.
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형을 숫자로 변환할 때 출력 배열에 넣는 요소들의 개수를 구합니다.
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형을 모두 변환하지 못한 경우 오류 메시지를 표시합니다.
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형을 만듭니다. 이 온도를 숫자형 배열로 변환합니다.
도 기호(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
입력 인수
str
— 스캔할 입력 텍스트
문자형 배열 | string형 스칼라
스캔할 입력 텍스트로, 문자형 배열 또는 string형 스칼라로 지정됩니다. str
이 문자형 배열이면 여러 개의 행이 있을 수 있으며 sscanf
는 문자를 열 순서로 읽습니다.
데이터형: char
| string
formatSpec
— 입력 필드의 형식
형식 지정 연산자
입력 필드의 형식으로, 형식 지정 연산자를 사용하여 지정됩니다. formatSpec
은 작은따옴표로 묶인 문자형 벡터이거나 string형 스칼라일 수 있습니다.
숫자형 필드
이 표에는 텍스트를 숫자형 출력값으로 변환하는 데 사용 가능한 변환 지정자가 나와 있습니다. sscanf
함수는 십진수(10진법) 표현으로 값을 변환합니다.
숫자형 필드 유형 | 변환 지정자 | 설명 |
---|---|---|
정수, 부호 있음 |
| 10진법입니다. |
| 값에 따라 다음과 같이 진법이 결정됩니다.
| |
| 64비트 값으로, 10진법, 8진법 또는 16진법입니다. | |
정수, 부호 없음 |
| 10진법입니다. |
| 8진법(8진수)입니다. | |
| 16진법(16진수)입니다. | |
| 64비트 값으로, 10진법, 8진법 또는 16진법입니다. | |
부동소수점 숫자 |
| 부동소수점 값입니다. 입력 필드는 다음 중 하나를 포함할 수 있습니다(대소문자를 구분하지 않음). |
문자형 필드
이 표에는 텍스트를 문자형 배열 출력값으로 변환하는 데 사용 가능한 변환 지정자가 나와 있습니다.
문자형 필드 유형 | 변환 지정자 | 설명 |
---|---|---|
문자형 벡터 또는 string형 스칼라 |
| 공백이 나올 때까지 |
| 공백을 포함하여 단일 문자를 읽습니다. | |
패턴 일치 |
| 일치하지 않는 문자나 공백이 처음 나타날 때까지 대괄호에 있는 문자만 읽습니다. 예: |
formatSpec
에 숫자 지정자와 문자 지정자가 조합되어 있다면 sscanf
함수는 각 문자를 그에 상응하는 숫자로 변환합니다.
선택적 연산자
필드 및 문자 무시
특정 필드 또는 필드의 부분을 무시하도록 지정하지 않을 경우
sscanf
함수는 순차적으로 모든 숫자형 값과 문자를 읽습니다. 필드를 건너뛰려면 퍼센트 기호(%
) 뒤에 별표(*
)를 삽입하십시오. 예를 들어, 정수를 건너뛰려면%*d
를 지정하십시오.필드 너비
한 번에 읽을 최대 숫자 또는 텍스트 문자 개수를 지정하려면 퍼센트 문자 다음에 숫자를 추가해야 합니다. 예를 들어,
%10c
는 공백을 포함하여 한 번에 10개의 문자를 읽고,%4f
는 소수점을 포함하여 한 번에 최대 4개의 숫자를 읽습니다.리터럴 텍스트 무시
sscanf
함수는 변환 지정자 바로 앞이나 뒤에 지정된 텍스트를 무시합니다.예:
Level%u
는'Level1'
을1
로 읽습니다.예:
%uStep
은'2Step'
을2
로 읽습니다.
데이터형: char
| string
sizeA
— 출력 배열의 차원
Inf
(디폴트 값) | 정수 | 요소를 2개 가진 행 벡터
출력 배열 A
의 차원으로, 양의 정수 Inf
또는 요소를 2개 가진 행 벡터로 지정됩니다.
| 설명 |
---|---|
| 입력값을 끝까지 읽습니다. |
| 최대 |
| 최대 |
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
출력 인수
A
— 출력 데이터
열 벡터 | 행렬 | 문자형 배열
출력 데이터로, 열 벡터, 행렬 또는 문자형 배열로 반환됩니다. A
의 클래스와 크기는 다음과 같이 formatSpec
으로 지정된 변환과 sizeA
로 지정된 출력 배열의 크기에 따라 달라집니다.
formatSpec
에 숫자 지정자만 포함된 경우A
도 숫자형 열 벡터가 됩니다.sizeA
인수를 지정한 경우A
는 지정된 크기의 행렬이 되고, 필요한 경우 0으로 채워집니다. 입력값에 포함된 값의 개수가sizeA
보다 적으면A
의 크기는sizeA
보다 작습니다. 이 값은 입력값에서 스캔된 값을 저장하는 데 필요한 크기입니다.formatSpec
에 64비트의 부호 있는 정수 지정자만 포함된 경우A
는int64
클래스가 됩니다.formatSpec
에 64비트의 부호 없는 정수 지정자만 포함된 경우A
는uint64
클래스가 됩니다.그렇지 않으면,
A
는double
형 클래스가 됩니다.
formatSpec
에%c
지정자 또는%s
지정자만 포함된 경우A
는 문자형 벡터가 됩니다.sizeA
를 지정한 경우A
는 문자형 배열이 되며 필요에 따라 null 문자로 채워집니다. null 문자는 그 값이 0인 제어 문자입니다. 입력값에 포함된 문자의 개수가sizeA
보다 적으면A
의 크기는sizeA
보다 작습니다. 이 값은 입력값에서 스캔된 문자를 저장하는 데 필요한 크기입니다.formatSpec
에 숫자 지정자와 문자 지정자가 조합되어 있다면A
는double
형 클래스 숫자이고,sscanf
함수는 각 문자를 그에 상응하는 숫자로 변환합니다. 이러한 변환은formatSpec
이 명시적으로 모든 숫자형 필드를 건너뛰도록 지정된 경우에도 발생합니다(예:formatSpec
이'%*d %s'
인 경우).sscanf
에서 입력값 모두를formatSpec
과 일치시킬 수 없을 경우A
는 숫자형 또는 문자형 배열이 될 수 있습니다.A
의 클래스는 처리를 중지하기 전에sscanf
함수가 읽은 값에 따라 달라집니다.
데이터형: double
| int64
| uint64
| char
n
— 출력 배열로 읽어 들인 요소 개수
정수
출력 배열로 읽어 들인 요소 개수로, 정수로 반환됩니다.
데이터형: double
errmsg
— 오류 메시지
문자형 벡터
오류 메시지로, 문자형 벡터로 반환됩니다. str
에 sscanf
가 변환할 수 없는 데이터가 포함되어 있으면 errmsg
에 오류 메시지가 포함됩니다. sscanf
가 모든 데이터를 성공적으로 변환한 경우에는 errmsg
에 빈 문자형 벡터가 반환됩니다.
데이터형: char
nextindex
— 스캔한 마지막 문자 다음 위치
정수
스캔한 마지막 문자 다음 위치로, 정수로 반환됩니다.
데이터형: double
팁
읽기 함수
sscanf
와fscanf
에 대한 형식 지정자는 쓰기 함수sprintf
와fprintf
에 대한 형식과 다릅니다. 읽기 함수에서 정밀도 필드는 지원되지 않습니다. 너비 필드는 쓰기를 위한 최솟값은 지정하지만 읽기를 위한 최댓값은 지정하지 않습니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)