Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=fgets">fgets</a>(3)

1장. fgets(3)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 예제

열린 파일(:12) 스트림으로 부터 문자열을 입력받는다.


1.1절. 사용법

#include <stdio.h> 


char *fgets(char *s, int size, FILE *stream);
		


1.2절. 설명

fgets 는 최대크기가 size 이하의 문자를 stream 으로 부터 읽어서 s 에 저장한다. 이때 stream 은 fopen(3)으로 만든 파일스트림이 될것이다.

fgets 는 비록 최대크기 size 이하 만큼을 stream 으로 부터 읽지만, 중간에 EOF 혹은 개행문자("\n") 를 만나면 읽기를 멈춘다.

버퍼에 대한 쓰기를 다했다면 fgets 는 buf 의 마지막 다음문자를 '\0'로 변경한다.


1.3절. 반환값

성공할경우 문자열의 포인터(:12) s 를 반환한다. 에러가 발생하거나 파일의 마지막에 도달했을경우, 또는 아무런 문자를 입력받지 못한경우에는 NULL(:12) 을 반환한다.


1.4절. 예제

#include <stdio.h>

#include <string.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    FILE *fp_stdin;
    FILE *fp_out;

    char buf_in[255];

    if (argc != 2)
    {
        printf("Usage : ./line_edit [저장파일이름]\n");
        exit(0);
    }

    if (access(argv[1], F_OK) == 0) 
    {
        printf("이미 파일이 존재하고 있음 : %s\n", argv[1]);
        exit(0);
    }

    fp_out  = fopen(argv[1], "w");    
    if (fp_out == NULL)
    {
        perror("file open error 1 : ");
        exit(0);
    }

    while(fgets(buf_in, 255, stdin) != NULL)
    {
        if ( strncmp(buf_in,"quit\n", 5) == 0)
            break;
        fputs(buf_in, fp_out); 
    }

    fclose(fp_out);
}
		
위 예제는 표준입력(:12) stdin로 부터 문자열을 읽어들여서 아규먼트로 주어진 파일로 저장하는 일을하는 프로그램이다. 이 프로그램은 Ctrl+D 나 "quit" 를 만나기 전까지 계속실행하면서 표준입력으로 읽은 문자열을 fputs(3) 를 통해서 파일로 쓴다.