C,C++ & Linux
-
C/C++ fread(3) fwrite(3)C,C++ & Linux 2020. 5. 22. 03:12
함수 기능 파일을 바이너리로 읽거나 쓰는 함수 Linux/Unix 는 바이너리 파일을 구분하지 않기 때문에 큰 의미는 없으나 바이트 단위로 데이터를 읽거나 쓸때 유용합니다. 함수 원형 #include size_t fread(void *ptr, size_t size, size_t nobj, FILE *fp); size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp); 매개변수 ptr 읽거나 쓸 데이터가 저장된 주소 size 읽거나 쓸 오브젝트의 단위 크기 nobj 오브젝트의 갯수 fp 데이터를 읽거나 쓸 파일 포인터 반환값 성공적으로 읽거나 쓴 오브젝트의 갯수 예제 #include #include #include struct ssu_id { c..
-
C/C++ puts(3), fputs(3)C,C++ & Linux 2020. 5. 22. 02:50
함수 기능 파일에 줄 단위 문자열을 출력하는 함수입니다. puts() 는 stdout 파일에 출력합니다. 함수 원형 #include int puts(const char *str); int fputs(const char *str, FILE *fp); 매개변수 str 출력할 문자열 fp 대상 파일 포인터 puts() 의 경우 자동적으로 stdout 이 지정됩니다. 반환값 성공 시 음이 아닌 정수 리턴 에러 시 EOF 리턴 예제 #include #include #include int main(int argc, char *argv[]) { char buf[BUFSIZ]; FILE *fp; // 파일을 읽기 + 쓰기모드로 열기 if ((fp = fopen(argv[1], "w+")) == NULL) { fprin..
-
C/C++ gets(3), fgets(3)C,C++ & Linux 2020. 5. 22. 02:19
함수 기능 라인 단위로 파일을 읽어들이는 함수입니다. gets() 는 표준 입력 파일로부터 개행문자('\n') 를 만날 때까지 읽으며, 개행문자는 널문자로 바꾸어 저장됩니다. fgets() 는 지정된 파일로부터 개행문자 포함 최대 n-1 개의 문자를 읽으며 n 번째 문자는 널문자로 채워집니다. 이 때 개행문자는 버퍼에 그대로 남기 때문에 getchar() 같은 함수로 비워내주는것이 좋습니다. ANSI 표준은 gets() 함수라고 지정되어 있으나 크기 n을 지정할 수 없어서 버퍼 오버플로우가 날 수 있으므로 fgets() 를 쓰는 것이 안전합니다. 함수 원형 #include char *gets(char *buf); char *fgets(char *buf, int n, FILE *fp); 매개변수 buf 읽..
-
C/C++ putc(3), fputc(3), putchar(3)C,C++ & Linux 2020. 5. 22. 02:05
함수 기능 파일에 한 글자를 출력하는 함수입니다. putc()는 매크로 함수, fputc() 는 함수로 구현되어있습니다. putchar()는 자동으로 표준 출력 파일에 출력합니다. 함수 원형 #include int putc(int c, FILE *fp); int fputc(int c, FILE *fp); int putchar(int c); 매개변수 c 출력할 문자 fp 출력 대상 파일 포인터 반환값 성공 시 c 리턴 에러 시 EOF 리턴 예제 #include #include #include int main(int argc, char *argv[]) { putc('a', stderr); fputc('b', stderr); putchar('c'); exit(0); } 결과 리눅스시스템프로그래밍 저자 : 홍지..
-
C/C++ ungetc(3)C,C++ & Linux 2020. 5. 22. 01:56
함수 기능 읽었던 문자를 다시 버퍼에 넣어주는 함수입니다. 버퍼에 다시 넣은 문자는 이후 getc, fgetc 등의 함수로 다시 읽어낼 수 있습니다. 함수 원형 #include int ungetc(int c, FILE *fp); 매개변수 c 다시 넣을 문자 fp 문자를 다시 넣을 파일 반환값 성공 시 c 리턴 에러 시 EOF 리턴 예제 #include #include #include void printOp(FILE *fp) { // 한 글자 읽어서 출력 char op = fgetc(fp); printf("Operator => %c\n", op); } int main(int argc, char *argv[]) { char op; FILE *fp; int character; int number = 0; if..
-
C/C++ ferror(3) feof(3) clearerr(3)C,C++ & Linux 2020. 5. 21. 21:36
함수 기능 ferror() : 파일 포인터의 에러 플래그가 1인지 확인해주는 함수 feof() : 파일 포인터의 EOF 플래그가 1인지 확인해주는 함수 clearerr() 파일 포인터의 플래그 변수를 초기화해주는 함수 fgetc(), getc(), gets() 이런 함수들을 쓰면 파일의 끝에 다다르거나 에러가 발생하게 되면 EOF를 리턴합니다. 이 때 개발자는 이것이 에러인지 아닌지 구분하기위해 feof(), ferror() 함수를 사용하고 이에 대한 적절한 조치가 이루어진 뒤 clearerr() 함수를 통해 에러 플래그와 EOF 플래그를 초기화시켜줍니다. 함수 원형 #include int ferror(FILE *fp); int feof(FILE *fp); void clearerr(FILE *fp); 매..
-
C/C++ getc(3) fgetc(3) getchar(3)C,C++ & Linux 2020. 5. 21. 15:56
함수 기능 문자 한 개를 읽어주는 함수입니다. getc()와 fgetc() 는 기능은 같으나 getc() 는 매크로, fgetc()는 함수로 구현되어있습니다. getchar() 함수는 표준 입력 파일에서 한 글자를 읽어들입니다. 함수 원형 #include int getc(FILE *fp); int fgetc(FILE *fp); int getchar(); 매개변수 fp 읽고자하는 파일의 파일 포인터 반환값 성공 시 읽은 문자 리턴 파일의 끝에 다다르거나 에러 시 EOF 리턴 예제 #include #include #include int main(int argc, char *argv[]) { int character; // 표준 입력파일에서 계속 읽어들이면서 // Ctrl + D 을 누르면 표준 입력에 EOF..
-
C/C++ fflush(3)C,C++ & Linux 2020. 5. 21. 10:32
함수 기능 아직 파일에 쓰이지 않은 버퍼의 내용을 커널에 전달하는 함수 fflush() 를 호출해도 버퍼의 내용을 커널에 전달할 뿐 파일을 닫는 것은 아닙니다. 함수 원형 #include int fflush(FILE *fp); 매개변수 fp 버퍼를 비울 파일 포인터 반환값 성공 시 0 리턴 에러 시 EOF 리턴하고 errno 설정 예제 #include #include #include int main(int argc, char *argv[]) { char buf[BUFSIZ]; // stdout 같은 터미널은 Line buffer 로 지정됨 setbuf(stdout, buf); // \n 을 만나지 않았지만 fflush 로 인해 바로 출력 printf("Hello, "); fflush(stdout); sl..