더북(TheBook)

이제 fgets()함수로 파일에서 문자열을 읽어 옵니다. fgets()함수를 호출할 때는 첫 번째 전달값에 읽어 올 문자열을 저장할 변수를 적고, 두 번째 전달값에는 읽어 올 문자열의 최대 크기를, 마지막 전달값에는 파일 포인터를 넣습니다.

형식

fgets(변수명, 문자열최대크기, 파일포인터)

앞에서 test1.txt 파일에 텍스트 2줄을 입력했죠? 이를 fgets()함수로 1줄씩 읽어 와서 출력해 보겠습니다.

앞에서 배운 #define 지시문을 사용해 #include 아래에 #define MAX 10000을 추가합니다. 이는 코드 내에서 MAX라는 값이 사용되면 숫자 10000으로 치환하겠다는 뜻입니다. 이 매크로는 배열을 선언할 때 사용합니다.

fgets()함수로 파일에서 값을 읽어 와 출력하려면 값을 보관해 둘 곳이 필요합니다. 이를 위해 main()함수 안에 이름은 line, 크기는 MAXchar형 배열을 선언합니다. 앞에서 #define을 통해 MAX는 숫자 10000으로 치환되므로 char line[10000];을 선언한 것과 같습니다.

1줄씩 읽어 와 출력하는 동일한 작업을 반복 수행하므로 반복문을 사용하는데, 여기서는 while 문으로 작성합니다. 출력은 test1.txt 파일에서 읽어 올 문자열이 있을 때까지, 즉 읽어 온 값이 NULL이 아닐 때까지 진행합니다. 따라서 fgets()함수에서 읽어 온 값이 NULL이 아닌지를 확인해야 하므로 이 부분을 while 문의 조건으로 넣습니다. fgets()함수의 첫 번째 전달값에는 앞에서 선언한 line 배열을 넣습니다. 두 번째 전달값에는 문자열의 최대 크기를 넣으므로 10000을 의미하는 MAX를 넣습니다. 그리고 파일 포인터인 file을 마지막 전달값으로 넣습니다. 그리고 fgets()함수로 읽어 온 값을 NULL과 비교해서 NULL이 아니면 while 문 안 문장을 실행합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.