본문 바로가기

프로그래밍 언어/C,C++16

C/C++ memset() 메모리 블록을 채우는 함수 #include void *memset(void *dest, int c, size_t count); memset() 함수는 dest 포인터가 가리키는 곳부터 count 바이트만큼 값 c로 채운다. 값 c는 부호없는 문자(unsigned character)로 변환된다. 매개변수 void *dest : 채울 메모리 블록에 대한 포인터 int c : 설정할 값, 넘겨지는 값은 int이지만 부호없는 문자로 변환되어 메모리 블록에 채워진다 size_t count : 값으로 채워질 바이트(byte)의 수 반환값 dest에 대한 포인터를 반환 코드 예시 #include #include int main(void) { char buffer[256]; char *string; memset(buffer, 0, sizeof(.. 2021. 7. 4.
C/C++ fgets() 문자열 읽기 함수 #include char *fgets(char *string, int n, FILE *stream); fgets() 함수는 stream에서 문자열을 읽는다. 문자열을 읽을 때, 첫 번째 개행 문자를 포함하는 곳까지 읽거나, stream의 끝까지 읽거나, $n-1$개의 문자를 읽는다. 읽은 문자열을 string에 저장하고 끝에 \0을 추가한다. $n$이 1이면 빈 string이 된다. 매개변수 char *string : stream에서 읽은 문자열을 복사해 저장할 문자 배열에 대한 포인터 int n : string에 복사될 최대 문자 수 FILE *stream : FILE 객체에 대한 포인터, 인자로 stdin을 사용해 표준 입력(standard input)으로 부터 입력 받을 수 있다 반환값 함수 호출이.. 2021. 7. 4.
C/C++ gets() 행 읽기 함수 #include char *gets(char *buffer); gets() 함수는 표준 입력 스트림 stdin으로 행을 읽고 buffer에 저장한다. 함수가 행을 읽은 경우 개행 문자 \n을 null 문자 \0으로 대체한다. gets()를 사용하지 말고, fgets()를 사용하자. gets() 함수는 2011 standard에서 deprecated 되었고, 2014 standard에서 제거되었다. gets() 함수를 사용하는 것이 버퍼 오버플로우를 발생시킬 수 있는 위험이 있기 때문이다. gcc를 이용해 컴파일 할 경우 다음과 같은 경고 메시지가 나타난다: warning: the `gets' function is dangerous and should not be used. 반환값 함수 호출이 성공한 경우.. 2021. 7. 4.
C/C++ fprintf() 스트림에 형식 문자열 쓰기 #include int fprintf(FILE *stream, const char *format-string, argument-list); 형식 문자열 format-string을 넘겨 받아, 출력 stream에 문자열을 쓴다. 이때 출력 문자열과 argument-list는 printf() 함수와 같은 형식이다. 매개변수 FILE *stream : 형식 문자열을 쓸 파일 포인터 const char *format-string : 형식 문자열 argument-list : 형식 문자열에 사용할 인자 반환값 함수 호출이 성공한 경우 쓰여진 문자의 개수가 출력, 에러가 발생한 경우 음수가 반환 코드 예시 #include int main(void) { int i, j; FILE *stream = fopen("mydi.. 2021. 7. 4.
메모리 영역 출력해서 알아보기 프로그램을 실행하면 운영체제는 메모리 공간을 제공하며, 메모리 공간은 낮은 주소부터 코드 영역, 데이터 영역, 힙 영역, 스택 영역을 할당한다. 코드 영역(code segment, text segment or text) 프로그램의 코드가 저장되는 영역이며, CPU는 코드 영역에 저장된 명령어를 가져와서 실행한다. 데이터 영역(data segment, or .data) 전역 변수(global variable)와 정적 변수(static)가 저장된다. 프로그램이 시작할 때 할당되며, 프로그램이 종료하면 소멸한다. 힙 영역(heap) 사용자(코드 작정자)가 메모리 공간을 동적으로 할당하고 해제한다. 힙 영역은 낮은 주소에서 높은 주소로 할당한다. 스택 영역(stack) 함수 호출과 함께 할당되며, 함수 호출이 .. 2021. 6. 28.
C++ 변수 초기화 방법 C++에서 변수를 초기화하는 방법은 세 가지가 존재한다. int width = 5; 2021. 6. 10.
C++ enum class와 enum C++의 enumeration에는 크게 enum class와 enum이 있다. enum class는 scoped enum이라 하며, C와의 호환을 위해 unscoped enum인 enum이 있다. user-defined type이다. enum class는 ::을 이용해 값을 가져온다. enum class가 더 안전하다. enum class Vehicle { Car, Bike, Truck }; Fruit suv_vehicle = Vehicle::Car; #include enum class Race { Dinan, Teklan, Ivyn, Moiran, Camite, Julian, Aidan }; int main() { Race race = Race::Teklan; switch (race) { case Ra.. 2021. 6. 10.