전체 글 (170) 썸네일형 리스트형 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.. C++/동적 메모리 할당 및 반환 동적 메모리 할당 프로그래머가 프로그램 작성시 메모리 확보를 위해 변수, 객체, 배열을 정적으로 할당 받는다. 사용자 중심에서 본다면 그 때 그 때 마다 필요한 메모리가 달라지기 때문에 정적으로 할당하기에는 한계가 있다. 즉 프로그램이 실행 중에 필요한 만큼 메모리를 할당받고 필요 없을 때 반환 할 수 있는 '동적 메모리 할당/반환 메커니즘'이 필요하다. 동적 메모리는 C에서는 함수를 통해 C++에서는 연산자를 통해 힙(heap)영역에 할당 된다. C의 동적 메모리 할당 및 반환 - malloc() / free() C++의 동적 메모리 할당 및 반환 - new / delete new와 delete의 기본 new 연산자는 데이터타입의 크기 만큼 힙으로 부터 메모리를 할당 그 결과 메모리에 접근 할 수 있는.. C++/CPPRESTSDK_VisualStudio에 설치 및 라이브러리 관리 # 목적 html body를 파싱하기 이전에 get/post request를 할 수 있는 라이브러리가 필요해서 찾아보았고, 기본적인 라이브러리 설치방법을 요약해서 기록하려고 함. # 환경 - Visual Studio - C++ # 설치과정 1. visual studio의 프로젝트탭에 NuGet 패키지 관리를 클릭. 2. 찾아보기 탭으로 변경하고 cpprestsdk를 입력. 3. cpprestsdk 작성자 : casablancacore를 확인하고 클릭하여 오른쪽 탭에 활성화되는 스크린의 설치를 클릭하여 설치 진행. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585.. 이전 1 ··· 10 11 12 13 14 15 16 ··· 22 다음