관리 메뉴

History

[C언어] fgets 함수에 대하여 본문

C,C++/개념 실습 프로그래밍

[C언어] fgets 함수에 대하여

luckybee 2023. 4. 26. 17:29
728x90
반응형

이번 차시에는 fgets 함수에 대해서 정리를 해보겠다. 

1. fgets 함수

fgets 함수는 FILE 구조체를 사용하여 파일 입출력 스트림에서 문자열을 가져오는 함수이다.

원형은 아래와 같다.

C++ char *__cdecl fgets(char *_Buffer, int _MaxCount, FILE *_Stream)

첫 번째 매개변수 Buffer는 파일에서 읽은 문자열을 저장할 메모리의 주소를 넘겨주면 된다.

두 번째 매개변수 MaxCount는 Buffer 즉 배열의 크기를 적으면 된다.

세 번째 매개변수 Stream은 파일 포인터를 적으면 된다. 파일 포인터는 FILE 구조체를 사용해서 텍스트 파일을 관리하는 포인터를 말한다. 

 

fgets 함수는 보통 개행(\n) 문자를 만날 때까지 문자열을 읽는 것이 기본이지만 한 줄에 MaxCount 이상의 문자열이 들어온다면 한 줄을 다 읽지 않고 중단할 수도 있다.

 

2. fgets 함수의 반환값

FILE* p_file = NULL;
char buf[MAX_LENGTH];  //문자열을 읽을 배열
char *p=fgets(buf,MAX_LENGTH,p_file);

fgets 함수는 char* 형식의 반환 형을 가지는데 보통 첫 번째 매개 변수로 전달한 변수의 주소가 반환된다. 위의 코드를 예시로 든다면 buf의 시작 주소를 반환한다는 뜻이다.

 

그러나 fgets 함수로 파일에서 문자열 읽기를 시도했지만 파일의 끝(EOF)을 만나게 되어 파일을 더 이상 읽지 못하게 된다면 fgets 함수는 NULL을 반환하여 파일 읽기를 중단한다.

 

아래 예시 코드를 넣었다.

#include<stdio.h>
#pragma warning(disable:4996)
#define MAX_LENGTH		128

int main()
{
	char buf[MAX_LENGTH];  //문자열을 읽을 배열
	FILE* p_file = NULL; //파일 포인터 선언 및 초기화

	if (fopen_s(&p_file,"data.txt","rt")==0){   //파일을 읽기 모드로 열겠다.
		while (fgets(buf,MAX_LENGTH,p_file)!=NULL){
		     //파일을 성공적으로 읽었다면 여기서 작업하면 된다.
		}
	}
	fclose(p_file); //파일을 닫겠다.


	return 0;
}

위 코드에서 while문 안에 있는 주석 부분에서 처리하고 싶은 문자열을 처리하면 된다.

728x90
반응형
Comments