본문 바로가기

반응형

Programming

(77)
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..
C/고수준 파일 입출력/파일 포인터 지정 및 반환 고수준 입출력 함수fopen(3) : 파일 열기저수준에서는 명시적으로 READ_ONLY, WRITE 형식으로 쓰임.고수준에서는 "r" 처럼 지정 모드로 연다.파일 모드 리스트 fopen 예시 - fclose(3) 파일이 열려있으면 닫아야함.fclose() 사용 예시
C/고수준 파일입출력/파일 기술자 # 환경 - CensOS 7 - Windows 10- Visual Studio- Vim 파일 기술자와 파일 포인터 파일 기술자 (파일 디스크립터) - 저수준 입출력에서 사용0 : 표준 입력1 : 표준 출력2 : 표준 에러0, 1, 2 은 예악되어 있기 때문에 파일 기술자는 3번부터 고수준 입출력 - 파일 포인터 사용 fp구조체에 대한 포인터를 가리키는 것.자료형 FILE * 형 사용고수준 입출력의 함수는 함수 이름에 f가 붙어 있다. 파일 기술자와 파일 포인터 간의 관계
C++/동적 메모리 할당과 메모리 누수(memory leak) 메모리 누수 (memory leak)동적으로 할당받은 메모리의 주소를 잃어버려 힙에 반환할 수 없게 되면 메모리 누수가 발생한다.메모리 누수가 계속 발생하는 루틴이 계속 반복 될 경우, 프로그램 종료 되고 다시 시작 하기 이전까지 실행 중에는 메모리를 할당받을 수 없는 심각한 상황이 발생할 수 있다. 메모리 누수 예시 1123char n = 'a';char *p = new char[1024];p = &n;cs 위 코드에서 new로 할당 받은 1024 바이트의 메모리 누수가 발생한다. 위 코드에서 처음 *p는 동적으로 할당한 1024바이트의 메모리 주소를 가지고 있었지만, p 가 n의 주소값을 가지게되면서 1024바이트의 메모리 주소를 반환할 수 없게 된다. 메모리 누수 예시 21234char *p;for..
C++/객체와 객체 배열의 동적 생성 및 반환 객체의 동적 생성 및 반환new는 클래스 크기의 메모리를 할당 받아 객체를 생성하며, 이때 생성자를 호출한다.delete이 실행되면 객체를 반환하기 직전에 소멸자가 실행된다. 객체 생성과 객체 반환 예123456Circle *p = new Circle;Circle *q = new Circle(30); delete p;delete q; cs delete 사용시 주의점반환할 객체는 반드시 new를 이용해 할당 받은 동적 메모리에 존재하는 객체여야 한다.다음 delete 문은 실행 오류를 발생 시킨다. 1234Circle donut;Circle *p = &donut; delete p;cs Circle 객체의 동적 생성 및 반환12345678910111213141516171819202122232425262728..

반응형