[C언어] Pcap을 이용한 TCP 프로토콜 정보 출력 프로그램
·
Programming Language/PYTHON
📝 과제 내용 🧩 코드 구성 설명 구조체 struct Ethernet : 2계층 이더넷 패킷의 헤더 구조체 strcut IP : 3계층 IP 패킷의 헤더 구조체 struct TCP : 4계층 TCP 패킷의 헤더 구조체 struct TCP_Payload : TCP 페이로드를 저장할 구조체 함수 void usage() : 사용법에 대해 출력해주는 함수 bool parse() : 인수의 개수가 올바르게 받아지면 True를 반환하는 함수 int main() : 인수의 개수 검사 아무 패킷이 캡쳐되지 않았을 때 오류 메시지 출력 패킷을 캡쳐하고, TCP 패킷인지 확인하고 정보 출력 🖥️ 코드 & 설명 #include #include #include #include #include // 2계층 이더넷 구조체 선언 ..
[C언어] NBO - HBO 빅 엔디언을 리틀 엔디언으로 바꾸기
·
Programming Language/C
📝 과제 내용 🧩 코드 구성 설명 BigtoLittle() : 빅 엔디언에서 리틀 엔디언으로 변환하는 함수 main() : 입력 파일과 출력 파일의 이름을 인수로 받는다. 입력 파일을 바이너리로 읽어 FILE 형 변수에 저장한다. 4바이트만 읽어 unint32_t 형 변수에 저장한다. BigtoLittle() 함수를 호출해 변환 해준다. 변환해준 값을 출력 파일에 "쓰기" 해준다. 🖥️ 코드 & 설명 #include #include #include // 빅엔디언에서 리틀엔디언으로 변환하는 함수 int BigtoLittle(uint32_t buf) { uint32_t result; // 비트연산을 이용해 변환 result = (buf >> 24) | ((buf >> 8 ) & 0x0000FF00) | ((..
[C언어] 백준 10810번 : 공 넣기
·
Programming Language/C
✅ 문제 제출 📄 문제 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다. 도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다. 공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오. ⌨️ 입력 첫째 줄에 ..
[C언어] 백준 2562번 : 최댓값
·
Programming Language/C
✅ 문제 제출 📄 문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. ⌨️ 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 🖥️ 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 🧪 예제 예제 입력 3 29 38 12 57 74 40 85 61 예제 출력 85 8 ✏️ 문제 풀이 #include int main() { int arr[9] = { 0, }; int max =..
[C언어] 동적 할당 : malloc()
·
Programming Language/C
💾 C의 메모리 동적 할당 컴파일 타임 → Data 영역과 Stack 영역에 할당되는 메모리의 크기 결정 런 타임 (프로그램이 실행되는 중) → 힙 영역의 크기 결정 런 타임에 메모리를 할당 받는 것을 메모리의 동적 할당이라고 한다. 동적 메모리 할당은 프로그램 실행 중에 필요한 만큼의 메모리를 할당해주는 것이다. C언어에서 메모리 동적 할당을 해주기 위해 malloc() 함수를 사용할 수 있다. 📌 malloc() 함수 Memory + Allocation 의 단어가 합쳐진 malloc()은 C언어에서 메모리의 동적 할당을 해주는 함수이다. malloc() 함수의 원형은 다음과 같다. #include void *malloc(size_t size); 동적 할당을 하기 위한 함수를 사용하기 전에 #inclu..
[C언어] 백준 10818번 : 최소, 최대
·
Programming Language/C
✅ 문제 제출 📄 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. ⌨️ 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 🖥️ 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 🧪 예제 예제 입력 5 20 10 35 30 7 예제 출력 7 35 ✏️ 문제 풀이 #include #include int main() { int N = 0; int max = 0, min = 0; int* arr; scanf("%d", &N); arr = (int*)malloc(N *..
[C언어] Call By Value & Call By Reference
·
Programming Language/C
Call By Value & Call By Reference 함수로 인자를 전달하는 방식에는 크게 Call by value와 Call by reference 방식이 있다. Call By Value (값에 의한 호출) 함수 호출 시 인자로 전달되는 변수의 값을 함수의 매개변수에 복사하여 전달하는 방식 복사된 인자는 지역 변수의 특성을 가지게 된다. → 매개변수의 값을 변경해도 원래의 변수에는 영향 X ⇒ 원본 값을 바꿀 필요가 없을 때 사용 #include void sub(int a) { a = a - 3; printf("sub 함수의 매개변수 a의 값 : %d\\n", a); } int main() { int a = 10; printf("sub 함수 실행 전 a 값 : %d\\n", a); minus(a..
C 포인터(Pointer)
·
Programming Language/C
👆 포인터란? 변수의 주소값을 가리키는, 저장하는 변수 📣 포인터 변수 선언하기 int *[변수명]; char *[변수명]; int형 변수의 주소를 담고 싶다면 int *을, char형 변수의 주소를 담고 싶다면 char *을 사용한다. 다른 자료형들도 마찬가지이다. 선언할 때에는 아래의 형식 모두 가능하다. int *p int* p int * p 🪄 포인터 연산자 주소 연산자 ( & ) 변수의 이름 앞에 사용하며, 해당 변수의 주소값을 반환함. 참조 연산자 ( * ) 포인터의 이름이나 주소 앞에 사용하며, 포인터가 가리키는 주소에 저장된 값을 반환함. ❗ 포인터 변수를 선언할 때 사용하는 *은 포인터 변수를 선언하기 위한 것으로 참조 연산자의 *은 다른 의미를 가지고 있다. 🛒 포인터 변수의 크기 포인..
C언어 멘토링 | 6주차 [과제] | 백준 2675번, 1157번
·
Programming Language/C
문제1 백준 2675번 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 : 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 : 각 테스트 케이스에 대해 P를 출력한다..