본문 바로가기

반응형

Programming/C/C++

(42)
C/Linux 파일 정보 검색 파일 정보 검색 - 파일명으로 파일 정보 검색 stat(1)inode에 저장된 파일 정보 검색path에 검색할 파일의 경로를 지정하고, 검색한 정보를 buf에 저장stat 구조체 inode.c - stat함수 사용1234567891011121314151617181920212223#include #include #include int main(void) { struct stat buf; stat("unix.txt", &buf); printf("Inode = %d\n", (int)buf.st_ino); printf("Mode = %o\n", (unsigned int)buf.st_mode); printf("Nlink = %o\n", (unsigned int) buf.st_nlink); printf("UID =..
C/고수준 파일 입출력/임시 파일 생성 임시파일 생성- 임시파일명이 중복되지 않도록 임시파일명 생성- 임시파일명 생성 : tmpnam(3)임시파일명을 시스템이 알아서 생성- 접두어 지정 : tempnam(3)임시 파일명에 사용할 디렉토리와 접두어 지정, 접두어는 5글자까지만 지원tempnam 사용- 템플릿을 지정한 임시 파일명 생성 : mktemp(3)임시파일의 템플릿을 받아 임시 파일명 생성템플릿은 대문자 'X' 6개로 마치도록 해야한다. tmpnam 과 tempnam 실행 예시 임시 파일명 만들기 예시12345678910111213141516171819202122232425#include #include #include int main(void) { char *fname; char fntmp[BUFSIZ]; char template[32]..
C/고수준 파일 입출력/파일 포인터와 파일 기술자간 변환 파일기술자와 파일포인터간 변환저수준 파일 입출력의 파일기술자와 고수준 파일 입출력의 파일포인터는 상호 변환 가능 - 파일 포인터 생성 : fdopen(3) (파일 디스크립터 오픈의 약자)파일 기술자와 모드값을 받아 파일 포인터를 생성- 파일 기술자 생성: fileno(3)파일 포인터를 인자로 받아 파일 기술자를 리턴고수준에서 저수준으로 변환 fdopen 함수 사용하기123456789101112131415161718192021222324#include #include #include int main(void) { FILE *fp; int fd; char str[BUFSIZ]; fd = open("unix.txt", O_RDONLY); if (fd == -1) { perror("open"); exit(1);..
C/고수준 파일 입출력/파일 오프셋 지정 및 이동, 저장 파일 오프셋 지정- 파일 오프셋 이동 : fseek(3)stream이 가리키는 파일에서 offset에 지정한 크기만큼 오프셋을 이동whence는 lseek과 같은 값을 사용fseek은 성공하면 0을 실패하면 EOF를 리턴- 현재 오프셋 구하기 : ftell(3)현재 오프셋을 리턴. 오프셋은 파일의 시작에서 현재 위치까지의 바이트 수- 처음 위치로 오프셋 이동 ; rewind(3)오프셋을 파일의 시작 위치로 즉시 이동- 오프셋의 저장과 이동 : fsetpos(3), fgetpos(3)fgetpos: 파일의 현재 오프셋을 pos가 가리키는 영역에 저장fsetpos : pos가 가리키는 위치로 파일 오프셋을 이동 fseek 함수 사용1234567891011121314151617181920212223242526..
C/고수준 파일 입출력/형식 기반 입출력 함수 형식 기반 입출력 - 형식 기반 입력 함수 : scanf(3) -> 저수준, fscanf(3) -> 고수준fscanf도 scanf가 사용하는 형식 지정 방법을 그대로 사용성공하면 읽어온 항목의 개수 리턴 - 형식 기반 출력 함수 : printf(3) -> 저수준 , fprintf(3) -> 고수준fprintf는 지정한 파일로 형식 지정 방법을 사용하여 출력형식 기반 입출력 예시1234567891011121314151617181920#include #include int main(void) { FILE *rfp; int id, s1, s2, s3, s4, n; if ((rfp = fopen("unix.dat", "r")) == NULL) { perror("fopen: unix.dat"); exit(1); ..
C/고수준 파일 입출력/버퍼 기반 입출력 함수 버퍼 기반 입출력 - 버퍼 기반 입출력 함수 : fread(3)항목의 크기가 size인 데이터를 nitems에 지정한 갯수만큼 읽어 ptr에 저장성공하면 읽어온 항목 수를 리턴읽을 항목이 없으면 0을 리턴- 버퍼 기반 출력함수 : fwrite(3)항목의 크기가 size인 데이터를 items에서 지정한 개수만큼 ptr에서 읽어서 stream으로 지정한 파일에 출력성공하면 출력한 항목의 수를 리턴오류가 발생하면 EOF를 리턴 버퍼 기반 입출력 예시12345678910111213141516171819202122#include #include int main(void) { FILE *rfp; char buf[BUFSIZ]; int n; if ((rfp = fopen("unix.txt", "r")) == NULL..
C/고수준 파일 입출력/문자열 기반 입출력 함수 문자열 기반 입출력 - 문자열 기반 입력 함수 : gets(3), fgets(3)get : 표준 입력에서 문자열을 읽어들인다.fgets : 파일 (stream)에서 n보다 하나 적게 문자열을 읽어 s에 저장- 문자열 기반 출력 함수 : puts(3), fputs(3) 문자열 기반 입출력 예시123456789101112131415161718192021222324252627#include #include int main(void) { FILE *rfp, *wfp; char buf[BUFSIZ]; if ((rfp = fopen("unix.txt", "r")) == NULL) { perror("fopen : unix.txt"); exit(1); } if ((wfp = fopen("unix.out", "a")) ..
C/고수준 파일 입출력/ 문자 기반 입출력 함수 문자 기반 입출력 함수- 문자 기반 입력 함수 : fgetc(3), getc(3) getchar(3), getw(3)fgetc : 문자 한 개를 unsigned char 형태로 읽음getc, getchar : 매크로 함수getw : 워드 단위로 읽어옴.- 문자 기반 출력함수 : fputc(3), putc(3), putchar(3), putw(3) 문자 기반 입출력 예시12345678910111213141516171819202122232425#include #include int main(void) { FILE *rfp, *wfp; int c; if ((rfp = fopen("unix.txt", "r")) == NULL) { perror("fopen : unix.txt"); exit(1); } if ((w..

반응형