728x90

코딩/C언어 14

C언어 동적 할당

동적 할당프로그램 실행 중에 메모리를 필요할 때 직접 요청해서 사용하는 것이다.- 보통 우리가 변수를 만들면 메모리 크기가 컴파일할 때 고정된다.int arr[10];그런데 실행할 때까지 몇 개가 필요할지 모를 수가 있다.실행 중에 메모리를 필요한 만큼 "동적으로" 빌리는 것이다. 2. 동적 할당 함수malloc 메모리를 '지정한 크기'만큼 빌려온다. (초기화 x)calloc 메모리를 '지정한 크기' 만큼 빌려오면서 '0'으로 초기화 까지 해준다.realloc 이미 빌린 메모리 크기를 '다시' 조정할 때 사용한다.free 빌린 메모리를 반납 할 때 사용한다. 3. malloc 예제#include #include malloc(sizeof(int)) -> int 하나 저장할 만큼 메모리를 빌려온다.빌린 메모..

코딩/C언어 2025.04.27

C언어 구조체(struct)

구조체란 ?구조체는 서로 다른 타입의 변수를 하나로 묶어서 쓰고 싶을 대 사용하는 사용자 정의 자료형기본 문법 예시 코드는 다음과 같습니다.struct Person { char name[20]; int age; float score;}이제 Person 이라는 타입을 만들어서 사람 정보를 묶어서 저장이 가능하다. 구조체를 사용하는 이유1. 서로 다른 타입의 데이터를 묶어서 관리ex) 학생 정보를 저장한다고 했을 때, 이름은 문자열, 나이는 정수, 성적은 실수 입니다.char name[30];int age;float grade;학생이 1명일 때는 괜찮지만, 100명, 1000명일 경우에는 엄청 복잡해 지게 됩니다.그래서 구조체를 묶어 사용을 하게 되면 깔끔하게 관리가 가능합니다.struct Stu..

코딩/C언어 2025.04.26

C언어 포인터

포인터란?메모리 주소를 저장하는 변수이다. 어떤 변수의 값을 직접 저장하지 않고, 그 변수가 저장된 위치(주소)를가리킨다.예제 소스코드#include int main() { int a = 10; int *p; // 포인터 선언 p = &a; // 변수 a의 주소를 p에 저장 printf("a의 값: %d\n", a); printf("a의 주소: %p\n", &a); printf("p에 저장된 값(주소): %p\n", p); printf("p가 가리키는 값: %d\n", *p); // 역참조 return 0;}결과*p는 p가 가리키는 주소의 값에 접근하는 걸 의미한다. (역참조) 2. 포인터를 이용한 값 변경출력함수에 값을 넘길 때 포인터를 사용하면 원본 값을 수..

코딩/C언어 2025.04.25

C언어 45분 일찍 설정하는 로직

#include  int main() {     int H, M;     scanf("%d %d", &H, &M);     M -= 45; // 45분 일찍 설정     if (M         M += 60;         H--; // 한 시간 줄이기         if (H             H = 23;         }     }     printf("%d %d\n", H, M);     return 0; }  1. 현재 시간에서 45분 빼기2. 만약 분이 음수가 되면 한시간을 줄이고, 분을 60분 더해서 양수로 바꿈3. 시간이 음수가 되면 23시로 변경 (너무어렵다 )

코딩/C언어 2025.03.11

C언어 배열(array)

목차1. C언어 배열2. 배열 선언3. 1차원 배열4. 2차원 배열 1. C언어 배열- C언어에서 배열은 동일한 데이터 타입의 변수들을 연속적으로 저장할 수 있는 데이터 구조입니다.- 배열은 인덱스를 사용하여 각 요소에 접근할 수 있으며, 인덱스는 0부터 시작합니다.- 배열은 다양한 프로그래밍 작업에 활용되고, 특히 반복적인 작업을 수행할 때 유용합니다.- 배열 이름(arr)은 사실상 배열의 첫 번째 요소를 가리키는 포인터다.- arr[i] == *(arr + i)는 같은 의미입니다.-> 즉 포인터 연산을 통해서 배열을 넘나들 수 있다는 걸 꼭 알아야합니다. 2. 배열 선언배열의 형식은 다음과 같습니다.자료형 변수명[개수];자료형 : 배열에 저장할 자료의 형을 지정합니다.변수명 : 사용할 배열의 이름입니..

코딩/C언어 2024.05.06

C언어 fgets 함수

fgets 함수는 파일에서 문자열을 읽어들이는 함수입니다. 파일 포인터, 읽어들일 문자열 버퍼, 그리고 최대 읽을 문자 수를 인자로 받습니다. 문자열을 읽어들일 때 개행문자 ('\n') 까지 포함하여 읽어들이며, 지정된 최대 문자수에 도달하면 읽기를 중지합니다.  목차1. fgets 함수의 구조2. fgets 함수의 특징3. fgets 함수 사용 예시4. fgets 함수의 보안성 1. fgets 함수의 구조char *fgets (char *str, int num, FILE *stream);"str" : 읽은 문자열을 저장할 버퍼의 포인터입니다."num" : 읽을 최대 문자 수입니다."stream" : 입력 스트림을 가리키는 파일 포인터입니다.fgets 함수는 다음과 같이 동작합니다1. stream에서 최..

코딩/C언어 2024.05.04

C언어에서의 포맷 스트링 (Format String) 취약점

"printf"와 같은 함수를 사용할 때 주의해야 할 보안 취약점 중 하나가 포맷 문자열 취약점이다.이 취약점은 프로그램이 사용자 입력을 적절히 검증하지 않고 포맷 문자열 함수(printf, fprintf 등)에 전달할 때 발생하는 보안 문제입니다. 이러한 상황에서는 사용자가 의도하지 않은 형식 지정자를 입력하여 프로그램이 비정상적으로 동작하거나 보안 문제가 발생할 수 있다. C언어에서의 포맷 스트링 (Format String) 취약점아래의 코드를 살펴봅시다.#include int main(){ char buf[100]; printf("이름: "); scanf("%s", buf); printf(buf); // 여기서 취약점이 발생. return 0;}"printf" 함수는 포맷 문자열을 사용하여 입력된..

코딩/C언어 2024.04.30

#7 C언어 main 함수

C언어에서 int main() 은 프로그램의 시작점을 나타내는 함수 입니다. 이 함수는 C프로그램이 실행될 때 가장 먼저 호출되며, 프로그램의 실행 흐름을 지시합니다.   목차1. main 함수란?2. main 함수 기본 형태3. 예시 코드  main 함수란?C언어에서 main 함수는 프로그램의 시작점입니다. 모든 C 프로그램은 실행될 때 main 함수에서부터 시작됩니다. main 함수 기본 형태int main() { // 프로그램 실행 내용 return 0;}int : 함수의 반환 타입을 나타냅니다. 프로그램의 실행이 정상적으로 완료되었을 때는 보통 0을 반환하므로 "int" 타입입니다.main : 함수의 이름입니다. C 프로그램에서는 프로그램의 시작점을 나타내는 함수의 이름으로 관례적으로 "ma..

코딩/C언어 2024.04.20

#6 C언어 비트 시프트 연산 알아보기

안녕하세요. 오늘은 C언어 비트 시프트 연산에 대해 포스팅을 해보겠습니다. 비트 시프트 연산은 이진수의 비트를 왼쪽이나 오른쪽으로 이동시키는 기능을 제공합니다. 오늘 포스팅을 통해 어떤 경우에 사용되며, 어떻게 활용되는지 살펴보겠습니다.  목차1. 비트 시프트 연산의 기본 개념2. 왼쪽 시프트 연산 ( ' 3. 오른쪽 시프트 연산 ( ' >> ' )4. 비트 시프트 연산 활용 1. 비트 시프트 연산의 기본 개념컴퓨터에서 데이터는 이진수로 표현합니다. 비트 시프트 연산은 변수의 비트를 특정 방향으로 이동시킴으로써 변수의 값을 변화시킵니다. C언어에서는 주로 두 가지 종류의 비트 시프트 연산이 사용됩니다. 왼쪽 시프트 ( ' 오른쪽 시프트 ( ' >> ' ) 2. 왼쪽 시프트 연산 ( ' 왼쪽 시프트 연산은..

코딩/C언어 2023.12.17

#5 C언어 산술 연산자 기초 수학을 코드로 풀어보기

안녕하세요. 오늘은 C언어에서 사용되는 산술 연산자에 대해 포스팅을 해보겠습니다. C언어는 기본적인 수학적 연산을 수행하기 위한 다양한 산술 연산자를 제공합니다. 기초적인 코드 예제를 통해 실제로 어떻게 사용되는지 알아보겠습니다.  목차1. 산술 연산자 개념2. C언어 덧셈 연산자 (' + ')3. C언어 뺄셈 연산자 (' - ')4. C언어 곱셈 연산자 (' * ')5. C언어 나눗셈 연산자 (' / ')6. C언어 증가 연산자(' ++ ')와 감소 연산자(' -- ') 1. 산술 연산자 개념산술(算術) : 수의 다양한 연산을 다루는 수학의 한 분야로, 주로 기본적인 사칙연산인 덧셈, 뺄셈, 곱셈, 나눗셈 등을 다룹니다. 산술 연산자는 프로그래밍에서 기본적인 수학적 계산을 수행하는 데 사용되는 연산자들..

코딩/C언어 2023.12.13
728x90