728x90

C언어 36

[C언어] printf 함수 구현

`printf()` 함수란?`printf()` 함수는 C 프로그래밍에서 데이터를 출력하기 위해 가장 널리 사용되는 함수이다. 형식 지정자를 활용하여 다양한 데이터 타입을 출력할 수 있으며, 콘솔 기반 출력의 기본 도구이다. 형식 문자열과 형식 지정자`printf()` 함수는 형식 문자열을 입력받아 처리한다. 형식 문자열을 일반 텍스트와 형식 지정자로 구성되며, 형식 지정자는 `%d`, `%f`, `%s` 등으로 데이터 타입을 정의한다. 가변 인자의 처리 방법`printf()`는 가변 인자를 처리하기 위해 `stdarg.h` 에 정의된 `va_list`, `va_start`, `va_arg`, `va_end`를 사용한다. 이를 통해 함수 호출 시 전달된 인자들을 순차적으로 읽어 형식 지정자에 따라 처리한다..

C언어 2024.12.19

[C언어] 개행 문자

Keil 환경에서 ARM Compiler를 쓰며 마지막 줄에 개행 문자(\n)를 넣지 않으니 Waring 메시지가 떴었다. 찾아보니 C언어에서는 파일의 마지막에 개행 문자(\n)를 넣어야 한다는 규칙이 존재한다. 하지만, 실제 컴파일 환경에서 이 규칙을 무시해도 대부분의 경우 문제가 발생하지 않는다. 그렇지만 개행 문자를 마지막에 꼭 넣어야 하는지 알아보자. C 표준의 규칙C 표준(ISO C)에 따르면, 소스 파일의 마지막 줄은 반드시 개행 문자로 끝나야 한다. 그렇지 않을 경우, 컴파일러에 따라 다음과 같은 문제가 발생할 수 있다.소스 코드가 제대로 종료되지 않았다고 간주될 수 있다.다른 파일과 합칠 때 의도치 않은 문제가 생길 수 있다. 왜 개행 문자가 필요한가?1. POSIX 시스템 규칙 : POS..

C언어 2024.12.13

[C언어] qsort() 함수란?

`qsort()` 함수는 배열의 요소들을 정렬하기 위해 사용되는 범용적인 함수이다. 표준 라이브러리 ``에 정의되어 있으며, 다양한 데이터 타입을 정렬할 수 있는 장점이 있다. 이 함수는 퀵 정렬 알고리즘을 기반으로 구현되었다. 사용법void qsort(void *base, size_t num, size_t size, int (*compare)(const void *, const void *));매개변수`base` : 정렬할 배열의 시작 주소를 가리킨다. 이 매개변수는 배열의 첫 번째 요소를 가리키며, `void*` 타입으로 정의되어 있어 다양한 데이터 타입을 처리할 수 있다.`num` : 배열의 요소 개수를 나타낸다. 몇 개의 요소를 정렬할지 알려주는 역할을 한다.`size` : 각 요소의 크기를 바이..

C언어 2024.11.18

srand() 함수란?

srand() 함수는 C언어에서 난수 생성의 시드를 초기화하기 위해 사용되는 함수이다. 이 함수는 표준 라이브러리 에 정의되어 있으며, rand() 함수를 사용할 때 더 나은 난수 분포를 위해 종종 함께 사용된다. 사용법#include int main(void) { int seed = ??; // 시드 값 srand(seed);}  왜 사용할까?C언어에서 난수를 생성할 때는 rand() 함수를 사용한다. 하지만 rand() 함수는 동일한 시드 값에서 호출될 때 항상 동일한 수열을 반환하게 된다. 프로그램을 매번 실행할 때마다 다른 난수를 얻고 싶다면, 초기 시드 값이 달라야 한다. 여기서 srand() 함수가 필요한 것이다. srand() 를 통해 시드를 설정함으로써, 프로그램이 매번 다른 난수 수열을 ..

C언어 2024.11.15

[C언어] OOP 공부 (2)

1편에서는 OOP에 대해서 설명했고 이번 2편에서는 C에서의 OOP에 대해서 설명하겠다. C는 절차 지향 언어로 설계되었기 때문에, 객체 지향 프로그래밍(OOP) 기능을 기본적으로 제공하지 않는다. 하지만 구조체와 함수 포인터를 활용하여 객체 지향 개념을 모방할 수 있다. C에서 OOP 스타일로 코드를 작성하려면, 클래스, 상속, 캡슐화 등의 주요 개념을 수작업으로 구현해야 한다. C에서의 OOP 구현 방법1. 클래스의 구현2. 상속의 구현3. 다형성의 구현4. 캡슐화   클래스의 구현C에서 클래스는 구조체를 통해 구현할 수 있다. 구조체는 데이터를 저장할 수 있는 멤버들을 포함하므로, 객체의 속성을 표현하는 데 사용할 수 있다.또한, 함수 포인터를 구조체에 포함해 객체의 동작을 정의할 수도 있다.typ..

C언어 2024.11.13

티스토리 기본모드 수식 삽입

1. 수식을 이미지로 변환하여 삽입하기가장 간단하면서 보편적인 방법은 수식을 이미지로 변환해서 삽입하는 것이다. 이 방법을 사용하면 HTML이나 스크립트를 사용하지 않고도 깔끔하게 수식을 표현할 수 있다. 2. 외부 이미지 URL 사용하기Codecogs와 같은 수식 생성 도구는 수식을 URL 형태로 제공하기 때문에, 이를 티스토리에 삽입하는 방법도 있다. 이미지 URL을 사용하여 수식을 직접 삽입할 수 있다. 3. MathJax 스크립트를 사용하여 수식 렌더링하기티스토리 블로그의 기본 모드에서는 JavaScript와 같은 스크립트를 추가하는 것이 제한적이지만, HTML 편집 모드를 사용하면 MathJax 스크립트를 통해 수식을 렌더링할 수 있습니다.그리고 수식을 작성할 때는 $...$(인라인 수식) 또는..

C언어 2024.11.13

[C언어] OOP 공부 (1)

OOP(Object-Oriented Programming, 객체 지향 프로그래밍)은 프로그램을 여러 객체로 구성하여 개발하는 프로그래밍 패러다임이다. 각 객체는 데이터(속성, 변수)와 동작(메서드, 함수)을 포함하고 있어, 현실 세계의 개체를 모델링하고 이해하기 쉽게 만들어준다. OOP의 주요 개념객체(Object): 프로그램 내에서 실제로 동작하는 데이터와 기능의 단위이다. 예를 들어, 자동차 프로그램에서는 Car라는 객체를 만들고, 이 객체가 속도, 연료량과 같은 속성과 주행, 정지와 같은 동작을 포함할 수 있다.클래스(Class): 객체를 정의하는 청사진(템플릿)이다. 객체를 생성하기 위한 구조로, 속성과 메서드를 정의한다. 예를 들어, Car 클래스는 모든 자동차 객체가 따라야 할 속성과 메서드를..

C언어 2024.11.12

코드로 보는 수학 : 선형 보간법

선형 보간법이란?선형 보간법(linear interpolation)은 두 개의 알려진 값 사이에 위치한 어떤 지점의 값을 예측하는 방법이다. 간단히 말해, 두 점을 직선으로 연결하고 그 직선 위의 특정 위치에서 값을 찾는 것이다. 이 방법은 두 점 사이의 관계가 선형적일 때 매우 유용하다.선형이란 무엇인가?'선형'이라는 용어는 일직선 형태로 변화하는 관계를 의미한다. 즉, 두 변수 사이에 일정한 비율로 변화가 일어나면 선형적이라고 할 수 있다. 예를 들어, 온도가 시간에 따라 꾸준히 증가하거나 감소하는 경우, 그 관계를 선형적이라 할 수 있다. 선형 관계에서는 그래프가 직선의 형태를 가지며, 모든 점들이 직선 위에 위치한다.선형 보간법에서 사용하는 선형 관계는 이러한 두 점 사이에 존재하는 직선적인 변화..

[C언어] strcmp() 함수

strcmp() 함수는 C 프로그래밍 언어에서 문자열을 비교하는 함수이다.이 함수는 표준 라이브러리 에 정의되어 있다. #include int strcmp(const char *str1, const char *str2);매개변수str1, str2 : 비교할 문자열이다. 기능두 문자열 str1과 str2를 인자로 받아, 사전적으로 문자열을 비교한다. 두 문자열이 동일한지, 혹은 어느 쪽이 더 큰지(ASCII 코드 값에 따른 순서)를 판단한다. 반환값0 반환 : 두 문자열이 같을 때 반환된다.음수 반환 : str1이 str2보다 사전적으로 앞설 때 반환된다.양수 반환 : str1이 str2보다 사전적으로 뒤에 있을 때 반환된다.여기서 사전적으로는 ASCII 코드 값에 따라 정렬된 순서를 비교한다는 뜻입니다...

C언어 2024.11.07

[C언어] NULL과 null

NULL, NULL pointer, NULL character 등을 보며 어떤 블로그에는 null, 어떤 블로그에는 NULL으로 나와 있어서 NULL와 null에 대한 의문이 생겼다. NULL와 null에 대해서 알아보자. NULL표준에 정의된 매크로 상수로, 포인터가 유효한 주소를 가리키지 않는다는 것을 나타내는 특별한 값이다. 보통 #define NULL ((void*) 0) 형태로 정의되며, 주로 포인터가 특정한 값을 가리키지 않을 때 사용된다. nullC언어에는 null이라는 키워드나 상수가 없다. null이라는 이름은 C언어에서 사용하려고 하면 컴파일 오류가 발생한다.하지만 개념적으로 "널"을 의미하며, 코드 내에서 직접 사용되는 것이 아니라 설명이나 문서에서 사용된다. 널 포인터(null po..

C언어 2024.11.04
728x90