-
C/C++ ungetc(3)C,C++ & Linux 2020. 5. 22. 01:56728x90
함수 기능
읽었던 문자를 다시 버퍼에 넣어주는 함수입니다.
버퍼에 다시 넣은 문자는 이후 getc, fgetc 등의 함수로 다시 읽어낼 수 있습니다.
함수 원형
#include <stdio.h> int ungetc(int c, FILE *fp);
매개변수
c
다시 넣을 문자
fp
문자를 다시 넣을 파일
반환값
성공 시 c 리턴
에러 시 EOF 리턴
예제
#include <stdio.h> #include <stdlib.h> #include <unistd.h> 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 ((fp = fopen("expr.txt", "r")) == NULL) { fprintf(stderr, "fopen error\n"); exit(1); } // 파일의 끝까지 읽어들임 while (!feof(fp)) { // 숫자들을 계속 읽어들임 while ((character = fgetc(fp)) != EOF && isdigit(character)) { number = 10 * number + character - 48; } // 숫자 출력 fprintf(stdout, " %d\n", number); number = 0; // 마지막으로 읽은 character 는 연산자이므로 if (character != EOF) { // 연산자를 다시 버퍼에 넣어주고 ungetc(character, fp); // 함수호출 printOp(fp); } } exit(0); }
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)'C,C++ & Linux' 카테고리의 다른 글
C/C++ gets(3), fgets(3) (0) 2020.05.22 C/C++ putc(3), fputc(3), putchar(3) (0) 2020.05.22 C/C++ ferror(3) feof(3) clearerr(3) (0) 2020.05.21 C/C++ getc(3) fgetc(3) getchar(3) (0) 2020.05.21 C/C++ fflush(3) (0) 2020.05.21