이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
fprintf
텍스트 파일에 데이터 쓰기
설명
fprintf(
은 fileID
,formatSpec
,A1,...,An
)formatSpec
을 배열 A1,...An
의 모든 요소에 열 순서로 적용하고 텍스트 파일에 데이터를 씁니다. fprintf
는 fopen
호출에 지정된 인코딩 체계를 사용합니다.
fprintf(
은 데이터 형식을 지정하고 결과를 화면에 표시합니다.formatSpec
,A1,...,An
)
예제
리터럴 텍스트와 배열 값 출력
여러 숫자형 값과 리터럴 텍스트를 화면에 출력합니다.
A1 = [9.9, 9900]; A2 = [8.8, 7.7 ; ... 8800, 7700]; formatSpec = 'X is %4.2f meters or %8.3f mm\n'; fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm X is 8.80 meters or 8800.000 mm X is 7.70 meters or 7700.000 mm
formatSpec
입력값의 %4.2f
로 각 출력값 라인의 첫 번째 값이 소수점 뒤 2자리를 포함하여 4자리 필드 너비를 가지는 부동소수점 숫자를 지정할 수 있습니다. formatSpec
입력값의 %8.3f
로 각 출력값 라인의 두 번째 값이 소수점 뒤 3자리를 포함하여 8자리 필드 너비를 가지는 부동소수점 숫자를 지정할 수 있습니다. \n
은 새 줄을 시작하는 제어 문자입니다.
정수로 배정밀도 값 출력
소수부를 포함한 배정밀도 값을 정수 값으로 명시적으로 변환합니다.
a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));
1 3 5
formatSpec
입력값의 %d
는 벡터 round(a)
에 포함된 각각의 값을 부호 있는 정수로 출력합니다. \n
은 새 줄을 시작하는 제어 문자입니다.
텍스트 파일에 테이블 형식 데이터 쓰기
짧은 지수 함수 테이블을 exp.txt
라는 텍스트 파일에 씁니다.
x = 0:.1:1; A = [x; exp(x)]; fileID = fopen('exp.txt','w'); fprintf(fileID,'%6s %12s\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\n',A); fclose(fileID);
fprintf
에 대한 첫 번째 호출에서는 제목 텍스트 x
와 exp(x)
를 출력하고 두 번째 호출에서는 변수 A
의 값을 출력합니다.
Microsoft® 메모장을 사용하여 파일을 읽으려는 경우 새 줄로 이동하려면 '\n'
대신 '\r\n'
을 사용하십시오. 예를 들어, fprintf
호출을 다음으로 바꿉니다.
fprintf(fileID,'%6s %12s\r\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\r\n',A);
MATLAB® 가져오기 함수, 모든 UNIX® 애플리케이션, Microsoft Word, 워드패드는 '\n'
을 새 줄 표시자로 인식합니다.
type
명령을 사용하여 파일의 내용을 확인합니다.
type exp.txt
x exp(x) 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183
파일에 쓴 바이트 수 가져오기
파일에 데이터를 쓰고, 쓴 바이트 수를 반환합니다.
데이터 배열 A
를 파일에 쓰고, fprintf
가 쓰기 작업한 바이트 수를 가져옵니다.
A = magic(4); fileID = fopen('myfile.txt','w'); nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes = 96
fprintf
함수는 파일에 96바이트를 썼습니다.
파일을 닫습니다.
fclose(fileID);
type
명령을 사용하여 파일의 내용을 확인합니다.
type('myfile.txt')
16 5 9 4 2 11 7 14 3 10 6 15 13 8 12 1
명령 창에 하이퍼링크 표시
화면에 하이퍼링크(MathWorks 웹사이트)를 표시합니다.
url = 'https://www.mathworks.com'; sitename = 'The MathWorks Web Site'; fprintf('<a href = "%s">%s</a>\n',url,sitename)
formatSpec
입력값의 %s
는 변수 url
과 sitename
의 값이 텍스트로 출력됨을 나타냅니다.
입력 인수
fileID
— 파일 ID
1
(디폴트 값) | 2
| 스칼라
formatSpec
— 출력 필드의 형식
형식 지정 연산자
출력 필드의 형식으로, 형식 지정 연산자를 사용하여 지정됩니다. formatSpec
은 일반 텍스트와 특수 문자를 포함할 수도 있습니다.
formatSpec
에 \n
과 같이 이스케이프 문자를 나타내는 리터럴 텍스트가 포함된 경우 fprintf
함수는 이스케이프 문자를 변환합니다.
formatSpec
은 작은따옴표로 묶인 문자형 벡터이거나 string형 스칼라일 수 있습니다.
형식 지정 연산자
형식 지정 연산자는 퍼센트 기호 %
로 시작하고 변환 문자로 끝납니다. 변환 문자는 반드시 필요합니다. %
와 변환 문자 사이에는 필요에 따라 식별자, 플래그, 필드 너비, 정밀도 및 하위유형 연산자를 지정할 수 있습니다. (연산자 사이에는 공백을 사용할 수 없지만 여기서는 읽기 편하도록 표시되어 있습니다.)
변환 문자
다음 표에는 숫자형 데이터와 문자 데이터의 형식을 텍스트로 지정하는 변환 문자가 나와 있습니다.
값 유형 | 변환 | 세부 정보 |
---|---|---|
정수, 부호 있음 |
| 10진법 |
정수, 부호 없음 |
| 10진법 |
| 8진법(8진수) | |
| 16진법(16진수), 소문자 | |
|
| |
부동소수점 숫자 |
| 고정소수점 표기법(정밀도 연산자를 사용하여 소수점 이하 자릿수를 지정합니다.) |
| 지수 표기법(예: | |
|
| |
|
| |
|
| |
문자 또는 string형 |
| 단일 문자 |
| 문자형 벡터 또는 string형 배열. 출력 텍스트의 유형은 |
선택적 연산자
식별자, 플래그, 필드 너비, 정밀도, 하위유형 등의 선택적 연산자는 출력 텍스트의 형식을 추가로 정의합니다.
식별자
함수 입력 인수를 처리하는 순서입니다.
구문을 사용합니다. 여기서n
$n
은 함수 호출에서 다른 입력 인수의 위치를 나타냅니다.예:
('%3$s %2$s %1$s %2$s','A','B','C')
는 입력 인수'A'
,'B'
,'C'
를C B A B
로 출력합니다.참고: 입력 인수가 배열인 경우, 식별자를 사용해 그 입력 인수의 특정한 배열 요소를 지정할 수 없습니다.
플래그
'–'
왼쪽 맞춤.
예:%-5.2f
예:%-10s
'+'
모든 숫자형 값에 대해 항상 부호 문자(+ 또는 –)를 출력합니다.
예:%+5.2f
텍스트 오른쪽 맞춤.
예:%+10s
' '
값 앞에 공백을 삽입합니다.
예:% 5.2f
'0'
값 앞의 필드 너비를 0으로 채웁니다.
예:%05.2f
'#'
선택한 수치 변환을 수정합니다.
%o
,%x
또는%X
의 경우0
,0x
또는0X
접두사를 출력합니다.%f
,%e
또는%E
의 경우 정밀도가 0이어도 소수점을 출력합니다.%g
또는%G
의 경우 후행 0 또는 소수점을 제거하지 않습니다.
예:
%#5.0f
필드 너비
출력할 최소 문자 수입니다. 필드 너비 연산자는 숫자이거나 입력 인수를 가리키는 별표(
*
)일 수 있습니다.*
를 필드 너비 연산자로 지정할 경우, 다른 입력 인수가 출력할 너비와 값을 모두 제공해야 합니다. 너비와 값은 인수 쌍이거나 숫자형 배열 내의 쌍일 수 있습니다.*
를 필드 너비 연산자로 사용하면 각 값을 다른 너비로 출력할 수 있습니다.예: 입력 인수
('%12d',intmax)
는('%*d',12,intmax)
와 동일합니다.예: 입력 인수
('%*d',[2 10 5 100])
은10
에 두 개의 공백을 할당하고100
에 다섯 개의 공백을 할당하여'10 100'
을 반환합니다. 다른 방법으로,('%*d',2,10,5,100)
과 같이 필드 너비와 값을 여러 개의 인수로 지정할 수도 있습니다.플래그로 지정되지 않은 경우 이 함수는 값 앞에 공백을 사용하여 필드 너비를 채웁니다.
정밀도
%f
,%e
또는%E
의 경우소수점 오른쪽의 자릿수입니다.
예:'%.4f'
는pi
를'3.1416'
으로 출력함%g
또는%G
의 경우유효 자릿수입니다.
예:'%.4g'
는pi
를'3.142'
로 출력함정밀도 연산자는 숫자이거나 인수를 가리키는 별표(
*
)일 수 있습니다.*
를 필드 정밀도 연산자로 지정할 경우, 다른 입력 인수가 출력할 정밀도와 값을 모두 제공해야 합니다. 정밀도와 값은 인수 쌍이거나 숫자형 배열 내의 쌍일 수 있습니다.*
를 정밀도 연산자로 사용하면 각 값을 다른 정밀도로 출력할 수 있습니다.*.*
를 필드 너비 및 정밀도 연산자로 지정할 경우, 세 개(필드 너비, 정밀도, 값)를 한 단위로 구성해 지정해야 합니다.예: 입력 인수
('%.4f',pi)
는('%.*f',4,pi)
와 동일합니다.예: 입력 인수
('%6.4f',pi)
는('%*.*f',6,4,pi)
와 동일합니다.예: 입력 인수
('%*.*f',6,4,pi,9,6,exp(1))
은'3.1416 2.718282'
를 반환합니다. 여기서,9
와6
이exp(1)
의 출력값의 필드 너비와 정밀도로 사용되었습니다.참고
부동소수점 값에 대한 입력 숫자 데이터형의 정밀도를 초과하는 정밀도 연산자를 지정하는 경우 결과는 지정한 정밀도에 대한 입력값과 일치하지 않을 수 있습니다. 결과는 사용자의 컴퓨터 하드웨어와 운영 체제에 따라 다릅니다.
하위유형
하위유형 연산자를 사용하여 부동소수점 값을 8진수 값, 10진수 값, 16진수 값 중 하나로 출력할 수 있습니다. 하위유형 연산자는 변환 문자 바로 앞에 옵니다. 다음 표에는 하위유형을 사용할 수 있는 변환이 나와 있습니다.
입력값 유형
하위유형 및 변환 문자
출력값 유형
부동소수점 숫자
%bx
또는%bX
%bo
%bu
배정밀도 16진수, 8진수 또는 십진수 값
예:%bx
는pi
를400921fb54442d18
로 출력함%tx
또는%tX
%to
%tu
단정밀도 16진수, 8진수 또는 십진수 값
예:%tx
는pi
를40490fdb
로 출력함
형식 지정 연산자 앞이나 뒤의 텍스트
formatSpec
은 퍼센트 기호 %
앞이나 변환 문자 뒤에 텍스트를 추가로 포함할 수도 있습니다. 가능한 텍스트는 다음과 같습니다.
출력할 일반 텍스트.
일반 텍스트로 입력할 수 없는 특수 문자. 다음 표에는
formatSpec
에서 특수 문자를 나타내는 방식이 나와 있습니다.특수 문자
표현
작은따옴표
''
퍼센트 문자
%%
백슬래시
\\
경보
\a
백스페이스
\b
폼 피드(FF)
\f
새 줄(Newline)
\n
캐리지 리턴
\r
가로 탭
\t
세로 탭
\v
그 Unicode® 숫자형 값을 16진수
N
으로 나타낼 수 있는 문자\xN
예:
는fprintf
('\x5A')'Z'
를 반환합니다.그 Unicode 숫자형 값을 8진수
N
으로 나타낼 수 있는 문자\N
예:
는fprintf
('\132')'Z'
를 반환합니다.
형식 지정 연산자를 사용한 변환의 중요 동작
수치 변환은 복소수의 실수부만 출력합니다.
숫자형 값에 대한 텍스트 변환과 같이 데이터에 맞지 않는 변환을 지정하는 경우 MATLAB은 지정된 변환을 무시하고
%e
를 사용합니다.예:
'%s'
는pi
를3.141593e+00
으로 변환합니다.텍스트 변환(
%c
나%s
)을 정수 값에 적용하는 경우 MATLAB은 유효한 문자 코드에 대응하는 값을 문자로 변환합니다.예:
'%s'
는[65 66 67]
을ABC
로 변환합니다.
A1,...,An
— 숫자형 또는 문자형 배열
스칼라 | 벡터 | 행렬 | 다차원 배열
숫자형 또는 문자형 배열로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
출력 인수
nbytes
— 바이트 수
스칼라
fprintf
가 쓰는 바이트 수로, 스칼라로 반환됩니다. 파일에 쓸 때에는 nbytes
가 문자 인코딩에 따라 결정됩니다. 데이터를 화면에 출력하는 경우 nbytes
는 화면에 표시되는 문자 개수를 의미하게 됩니다.
팁
읽기 함수
sscanf
와fscanf
에 대한 형식 지정자는 쓰기 함수sprintf
와fprintf
에 대한 형식과 다릅니다. 읽기 함수에서 정밀도 필드는 지원되지 않습니다. 너비 필드는 쓰기를 위한 최솟값은 지정하지만 읽기를 위한 최댓값은 지정하지 않습니다.유효하지 않은 형식 지정 연산자 또는 특수 문자를 지정할 경우,
fprintf
함수는 유효하지 않은 연산자 또는 문자 전까지의 텍스트는 출력하고 나머지는 버립니다.예:
formatSpec
이'value = %z'
인 경우,%z
는 형식 지정 연산자가 아니기 때문에fprintf
함수는'value ='
를 출력합니다.예:
formatSpec
이'character \x99999 = %s'
인 경우,\x99999
는 유효한 특수 문자가 아니기 때문에fprintf
함수는'character'
를 출력합니다.
참고 문헌
[1] Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Inc., 1988.
[2] ANSI specification X3.159-1989: “Programming Language C,” ANSI, 1430 Broadway, New York, NY 10018.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
formatSpec
파라미터는 상수여야 합니다.formatSpec
에서 16진수 숫자는 [0 7F] 범위에 있어야 하고 8진수 숫자는 [0 177] 범위에 있어야 합니다.fileID
가 상수값1
또는2
를 가지며 외재적 호출이 가능하지 않을 경우, 코드 생성기는 Cprintf
호출을 생성합니다. 외재적 호출이 비활성화되었거나parfor
루프 내부에서fprintf
가 호출된 경우 외재적 호출이 불가능합니다.다음과 같은 경우, 생성된 코드에서
fprintf
의 동작은 MATLAB 동작 대신 C 컴파일러 동작과 일치합니다.형식 지정자에 해당하는 C 형식 지정자(예:
%e
또는%E
)가 있는 경우.fprintf
호출이parfor
루프의 내부에 있는 경우.외재적 호출이 비활성화된 경우.
다음 옵션과 기능은 지원되지 않습니다.
입력값을 재정렬하기 위한
n$
위치 식별자배열 출력
하위유형을 사용하여 부동소수점 숫자를 8진수, 10진수 또는 16진수 값으로 출력
형식 지정자
%s
를 사용하여fprintf
를 호출하는 경우 입력 문자형 벡터의 중간에 null 문자를 넣을 수 없습니다. null 문자를 쓰려면fprintf(fid, '%c', char(0))
을 사용하십시오.입력 인수 유형은 해당하는 형식 유형과 일치해야 합니다. 예를 들어,
n
이 double형인 경우 코드 생성 시 다음 코드는 허용되지 않습니다.str = sprintf('%d',n)
코드 생성 시, 먼저
n
을 부호 있는 정수형(예:int8
)으로 형변환하십시오.str = sprintf('%d',int8(n))
정수 형식 지정자를 사용하여
fprintf
를 호출하는 경우 정수 인수의 유형은 타깃 하드웨어에서 네이티브 C 유형으로 표현할 수 있는 유형이어야 합니다. 예를 들어fprintf('%d', int64(n))
을 호출하는 경우 타깃 하드웨어에 64비트 정수를 지원하는 네이티브 C 유형이 있어야 합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
이 함수는 GPU 배열을 받지만 GPU에서 실행되지는 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
이 함수는 분산 배열에 대해 연산을 수행하지만 클라이언트 측의 MATLAB에서 실행됩니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
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)