Joinc 팀블로그 리눅스 메뉴얼 정리 Joinc 위키
댓글

Recent Comments

Powered by Disqus
팀블로그 카테고리
  전체 (1105)
   공지사항 (1)
   검색엔진 (21)
   기술동향 (58)
   게임 (2)
   독서 (6)
   리눅스 (12)
   보안 (1)
   사회문제 (22)
   어셈블리 (43)
   영화 (3)
   오픈소스 (10)
   음악 (9)
   인물 (1)
   포인터 (4)
   프로그래머 (23)
   팀블로그 (20)
   테터툴즈 (29)
   C/C++ (152)
   FireFox (11)
   Gimp (2)
   Google (98)
   Java (13)
   Perl (2)
   Pthread (11)
   STL (13)
   TCP/IP (8)
   Tools (31)
   Web2.0 (42)
   Wiki (1)
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
2007/11/26 10:22

linux man page : fgets - 열린 파일 스트림으로 부터 문자열을 입력받는다.

1장. fgets(3)

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

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


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절. 반환값

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


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);
}
위 예제는 표준입력 stdin로 부터 문자열을 읽어들여서 아규먼트로 주어진 파일로 저장하는 일을하는 프로그램이다. 이 프로그램은 Ctrl+D 나 "quit" 를 만나기 전까지 계속실행하면서 표준입력으로 읽은 문자열을 fgets 를 통해서 파일로 쓴다.

:::