C언어 Newwork Study 3
·
C/Study
🌟 4-3 에코 클라이언트의 문제점더보기// echo_server.cwhile((str_len = read(clnt_sock, message, BUF_SIZE)) != 0) write(clnt_sock, message, str_len);// 서버는 클라이언트로부터 데이터를 여러 번에 걸쳐 수신할 수 있다고 생각하고 read()를 반복 호출함.// 수신한 만큼만 write()로 다시 전송함.// ehco_clientwrite(sock, message, strlen(message));str_len = read(sock, message, BUF_SIZE-1);// 클라이언트는 문자열을 한 번에 전송함// read()도 한 번만 호출해서 모든 데이터가 한 번에 수신되기를 기대함 해결책 1: read()..
C언어 Newwork Study 2
·
C/Study
🌟 TCP/IP 소켓 프로그래밍 예제 분석_p21. hello_serve r.c 더보기#include // 표준 입출력 함수 사용 (예: printf, fputs)#include // 표준 라이브러리 함수 (예: atoi, exit 등 사용)#include // 문자열 처리 함수들 (예: memset 사용)#include // 유닉스 계열 시스템 함수 (예: read, write, close)#include // IP 주소 변환 등 네트워크 함수 (예: htons, htonl 등)#include // 소켓 관련 함수 (예: socket(), bind(), listen(), accept() 등)void error_handling(char *message);// 오류 발생 시 메시지 출력 후 프로그램 종..
C언어 Newwork Study 1
·
C/Study
🌟 구조체더보기정의서로 다른 데이터 타입을 하나로 묶어서 관리할 수 있는 사용자 정의 데이터 타입특징여러 변수를 논리적으로 그룹화메모리 효율적인 데이터 관리복잡한 데이터 구조 표현 가능 🌟 구조체 포인터더보기개념구조체 변수의 주소를 저장하는 포인터활용법 함수에서 구조체 포인터 매개변수로 전달받아 효율적인 메모리 사용동적 메모리 할당과 연계하여 유연한 데이터 구조 구현접근 방법(*포인터명).멤버명 또는 포인터명->멤버명 🌟 파일 입출력더보기기본 개념프로그램과 외부 파일 간의 데이터 교환주요 함수들 fopen(): 파일 열기fclose(): 파일 닫기fprintf(), fscanf(): 형식화된 파일 입출력fread(), fwrite(): 바이너리 파일 입출력 🌟 분활 컴파일더보기목적큰..
C언어 간단한 프로그램 2
·
C/Task
🌟 프로그램 14, 난수 발생 함수를 사용하여 컴퓨터와 대전이 가능한 가위바위보 게임 만들기더보기💻 C언어를 사용해서 간단한 가위바위보 게임💻 사용자는 반복적으로 게임을 진행할 수 있으며, 종료 시에는 승/패/무 결과까지 출력 🎮 기능 소개사용자로부터 가위(1), 바위(2), 보(3), 종료(0) 입력 받기컴퓨터는 랜덤하게 가위, 바위, 보 선택승/패/무 조건 비교 및 결과 출력사용자의 누적 승/패/무 전적 출력 📜 전체 코드#include #include #include // 게임 결과 출력 함수void count(int win, int lose, int draw);// 사용자로부터 입력을 받는 함수int user_input() { int user_choice; while (1) ..
C언어 형변환 개념정리
·
C/Concept
🌟 C언어 타입 캐스팅_정수형더보기들어가기 전에C언어를 배우면서 타입 캐스팅(Type Casting)은 반드시 이해해야 하는 핵심 개념. 특히 16진수 데이터를 다룰 때 더욱 중요해지는데, 지금 실제 코드와 메모리 분석을 통해 타입 캐스팅의 원리를 알아보자타입 캐스팅이란?하나의 데이터 타입을 다른 데이터 타입으로 변환하는 과정. 마치 물을 얼음으로 바꾸는 것처럼, 같은 데이터를 다른 형태로 해석하는 것.캐스팅의 두 가지 방법암시적 캐스팅: 컴파일러가 자동으로 수행명시적 캐스팅: 프로그래머가 직접 지정실습 코드 분석#include void main(){ // 16진수 값을 int 타입 변수에 저장 int iNum = 0x1a2b3c4d; printf("iNum 값: %x\n", iNum)..
C언어 간단한 프로그램 1
·
C/Task
🌟 프로그램 1, 계산기더보기#include // 사칙연산 함수들int add(int a, int b) { return a + b;}int min(int a, int b) { return a - b;}int mul(int a, int b) { return a * b;}int div(int a, int b) { if (b != 0) { return a / b; } else { printf("0으로 나눌 수 없습니다.\n"); return 0; // 오류 처리 }}int per(int a, int b) { if (b != 0) { return a % b; } else { printf("0으로 나눌 수..
C언어 포인터 개념정리_2
·
C/Concept
🌟 구조1, & 주소 연산자더보기포인터는 메모리 주소를 저장하는 변수로, C언어에서 가장 중요하면서도 어려운 개념 중 하나. ① (&) 연산자 개념정식 명칭: Address-of 연산자 (주소 추출 연산자)변수가 저장된 메모리의 주소를 반환사용 방법: &변수명 ② 메모리 주소란?컴퓨터의 메모리는 수많은 작은 저장공간들이 일렬로 배열된 구조이다. 각 저장공간마다 고유의 번호가 있는데, 이를 메모리 주소라 부른다. 마치 아파트의 각 호수처럼 각 메모리 공간을 구분하는 번호다. ③ 코드 상세 분석#include void main(){ int iNum = 90; // 정수형 변수 iNum을 선언하고 90으로 초기화 // %d: 정수를 10진수로 출력하는 형식 지정자 // iNum: 변..
C언어 함수
·
C/Task
🌟 예제 53, 함수 이용해서 두 수 중 큰 수 찾기더보기#include int compare(int a, int b) { return a > b;}int main(){ int x, y; int max; printf("정수(2개): "); scanf("%d %d", &x, &y); max = compare(x, y); if (max == 1) { printf("큰 수: %d", x); } else { printf("큰 수: %d", y); } return 0;} 🌟 예제 53, 함수 이용해서 세 수 중 큰 수 찾기더보기#include int compare(int a, int b) { return a..