vfprintf() 함수란?
PHP의 vfprintf() 함수는 형식화된 문자열을 지정된 출력 스트림(stream)에 쓰는 함수로, 출력에 성공하면 출력된 문자열의 길이를 반환합니다. fprintf() 함수와 기능이 비슷하지만, vfprintf()는 삽입할 값들을 개별 인수가 아닌 배열 한 개로 전달받는다는 점이 다릅니다.
문법(Syntax)
vfprintf(stream, format, arg)
매개변수(Parameters)
stream − 형식화된 문자열을 출력할 대상(파일 포인터 등의 스트림)을 지정합니다.
format − 출력할 문자열과, 문자열 안의 변수들이 어떤 형식으로 변환될지를 지정합니다.
format에서 사용할 수 있는 주요 형식 지정자는 다음과 같습니다.
%% − 퍼센트(%) 기호를 반환합니다.
%b − 2진수(binary)로 표시합니다.
%c − ASCII 값에 해당하는 문자를 표시합니다.
%d − 부호 있는 10진수(음수, 0 또는 양수)로 표시합니다.
%e − 소문자를 사용하는 과학적 표기법으로 표시합니다. (예: 1.2e+2)
%E − 대문자를 사용하는 과학적 표기법으로 표시합니다. (예: 1.2E+2)
%u − 부호 없는 10진수(0 이상)로 표시합니다.
%f − 부동 소수점 숫자로 표시합니다. (로캘(locale) 설정의 영향을 받음)
%F − 부동 소수점 숫자로 표시합니다. (로캘 설정의 영향을 받지 않음)
%g − %e와 %f 중 더 짧은 표현을 사용합니다.
%G − %E와 %f 중 더 짧은 표현을 사용합니다.
%o − 8진수(octal)로 표시합니다.
%s − 문자열(string)로 표시합니다.
%x − 16진수로 표시합니다. (소문자)
%X − 16진수로 표시합니다. (대문자)
arg − format 문자열 내 각 % 기호 자리에 순서대로 삽입될 값들을 담은 배열입니다.
반환값(Return)
vfprintf() 함수는 스트림에 출력된 문자열의 길이를 정수(int)로 반환하며, 출력에 실패하면 false를 반환합니다.
사용 예제
다음은 vfprintf() 함수를 사용해 두 개의 값을 부동 소수점 형식으로 파일에 출력하는 예제입니다.
<?php
$str1 = 123;
$str2 = 456;
// 쓰기 모드(w)로 파일 열기
$file = fopen("sample.txt", "w");
$length = vfprintf($file, "%f%f", array($str1, $str2));
echo "출력된 문자열 길이: " . $length;
fclose($file);
?>
위 코드를 실행하면 sample.txt 파일에 %f 지정자에 따라 두 값이 실수 형태로 기록됩니다.
123.000000456.000000
이때 출력된 문자열의 전체 길이는 20이므로, 화면에는 "출력된 문자열 길이: 20"이라는 결과가 표시됩니다. 참고로 파일에 데이터를 쓸 때는 읽기 모드("r")가 아닌 쓰기 모드("w") 또는 추가 모드("a")로 파일을 열어야 정상 동작합니다.