PHP의 fgetc() 함수는 열려 있는 파일에서 한 번에 한 문자씩 읽어오는 함수입니다. 파일 포인터가 가리키는 위치에서 단일 문자를 읽어 문자열로 반환하며, 파일의 끝(EOF)에 도달하면 false를 반환합니다.
문법
fgetc(file_pointer)
매개변수
file_pointer − 유효한 파일 포인터여야 하며, fopen() 또는 fsockopen()으로 성공적으로 연 파일을 가리켜야 합니다. fclose()로 이미 닫힌 파일 포인터는 사용할 수 없습니다.
반환값
fgetc() 함수는 파일 포인터가 가리키는 파일에서 읽은 단일 문자를 담은 문자열을 반환하고, 파일 끝(EOF)에 도달하면 false를 반환합니다.
예제 1: 파일의 첫 번째 문자 읽기
다음 예제는 파일에서 첫 번째 문자 하나만 읽어 출력하는 코드입니다.
<?php
$file_pointer = fopen("one.txt", "r");
echo fgetc($file_pointer);
fclose($file_pointer);
?>파일 "one.txt"에 "Pirates of the Caribbean"이라는 텍스트가 저장되어 있다고 가정해 보겠습니다. fgetc()는 첫 번째 문자만 반환합니다.
출력 결과
P
예제 2: while 루프로 전체 내용 한 문자씩 읽기
이번에는 feof() 함수와 함께 반복문을 사용하여 파일의 모든 내용을 한 문자씩 순서대로 읽어오는 방법을 살펴보겠습니다. 파일 "two.txt"에 "James Gosling developed by Java"라는 텍스트가 있다고 가정합니다.
<?php
$file_pointer = fopen("two.txt", "r");
while (!feof($file_pointer)) {
echo fgetc($file_pointer);
}
fclose($file_pointer);
?>feof() 함수는 파일 포인터가 파일의 끝에 도달했는지 확인하는 역할을 합니다. 따라서 위 코드는 EOF에 도달할 때까지 계속해서 한 문자씩 읽어 전체 텍스트를 그대로 출력하게 됩니다.
출력 결과
James Gosling developed by Java
정리
fgetc()는 대용량 파일을 메모리에 한꺼번에 올리지 않고 처리해야 할 때 유용합니다. 다만 한 글자씩 읽기 때문에 성능이 중요한 경우 fgets()처럼 줄 단위로 읽는 방식이 더 효율적일 수 있다는 점도 함께 기억해 두면 좋습니다.