열린 파일 스트림으로 부터 문자열을 입력받는다.
#include <stdio.h>
char *fgets(char *s, int size, FILE *stream); |
fgets 는 최대크기가 size 이하의 문자를 stream 으로 부터 읽어서
s 에 저장한다. 이때 stream 은 fopen(3)으로 만든 파일스트림이 될것이다.
fgets 는 비록 최대크기 size 이하 만큼을 stream 으로 부터 읽지만,
중간에 EOF 혹은 개행문자("\n") 를 만나면 읽기를 멈춘다.
버퍼에 대한 쓰기를 다했다면 fgets 는 buf 의 마지막 다음문자를 '\0'로 변경한다.
성공할경우 문자열의 포인터 s 를 반환한다. 에러가 발생하거나 파일의 마지막에
도달했을경우, 또는 아무런 문자를 입력받지 못한경우에는 NULL 을 반환한다.
|
#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 를 통해서 파일로 쓴다.
:::
