스택(Stack)과 큐(Queue)를 이용한 지렁이 게임 이번에는 스택(Stack)과 큐(Queue)를 이용한 지렁이 게임을 만들어 보겠다.스택은 LIFO (Last In First Out) 나중에 들어온 것이 제일 먼저 나간다라는 뜻이다.스택을 이용한 계산기도 있으니 이 게시물을 통해서 스택의 구조를 먼저 익히고 오기를 바란다. [프로그래밍/C] - 스택(Stack)을 이용한 계산기 프로그램 그리고 큐는 FIFO (First In First Out) 먼저들어온게 먼저 나간다라는 뜻이다. 큐를 이용한 계산기가 마찬가지로 있으니 이 게시물을 통해서 큐의 구조를 먼저 익히고 오기를 바란다. [프로그래밍/C] - 큐(Queue)를 이용한 계산기 프로그램 이 두개를 알아보았으니 스택과 큐를 이용해서 지렁이 게임..
메시지, 파일 암호화 및 복호화하기 이번에는 메시지 암호화 및 복호화 하는 방법을 알아보겠다.일단 암호화란 무엇일까??문서 및 메시지를 다른 사람이 구분할 수 없는 문자 코드로 변경하는 것을 뜻합니다. 복호화는 무엇일까??암호화된 문서 및 메시지를 원래의 형태로 복원하는 것을 뜻합니다. 우리는 XOR 연산으로 암호화를 해 보겠다. #include #define SECRETKEY "!@#$%^&*()_+=-" int strlen(char *dest); int main() { char string[] = "1234567890"; int n = strlen(string); puts(string); for (int i = 0; i < n; i++) string[i] ^= SECRETKEY[i]; puts(str..
큐(Queue)를 이용한 계산기 프로그램 이번에는 큐를 이용해서 계산기를 만들어 볼 것이다.우리가 사용할 함수는 strlen, memset, memcpy, atoi 함수이다. strlen = 문자열의 길이를 알아내는 함수 memset = 메모리 채우기 함수 memcpy = 메모리 복사 함수 atoi = 문자열을 정수로 변환하는 함수 [프로그래밍/C] - memcpy, memmove, memset 함수 구현 [프로그래밍/C] - strcspn 문자열 중에서 일치되는 첫 문자의 위치 구하기 [프로그래밍/C] - strlen 문자열 길이 이 프로그램은 함수를 헤더파일을 include 해서 만든 프로그램이 아니고 직접 구현해서 만든 프로그램이다. 123456789101112131415161718192021222..
스택(Stack)을 이용한 계산기 프로그램 이번에는 스택(stack)을 이용해서 계산기 프로그램을 만들어 볼것이다.사용할 함수는 strlen, memset, strcspn, memcpy, atoi 함수를 사용해서 만들어보자. strlen = 문자열 길이 구하기. memset = 메모리 채우기 strcspn = 문자열 중에서 일치되는 첫 문자의 위치 구하기 memcpy = 메모리 복사하기 atoi = 문자열을 정수형으로 변형하기 [프로그래밍/C] - memcpy, memmove, memset 함수 구현 [프로그래밍/C] - strcspn 문자열 중에서 일치되는 첫 문자의 위치 구하기 [프로그래밍/C] - strlen 문자열 길이 이 프로그램 함수들은 헤더파일을 include 해서 만든것이 아니라 직접 구현..
야구 게임 이번에는 C언어로 야구 게임을 만들어 볼 것이다.0~9까지의 서로 같지 않은 난수 3개를 발생시켜서 그 숫자를 순서대로 맞추는 야구 게임 프로그램이다.난수 3개가 각자 서로 다를때 까지 난수를 발생 시킬것이다.한번 만들어보자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include #include void* memset(void* dest, int fillChar, unsigned int count);main(){ int com[3] = { 0, }, gamer[3] = { 0, }, guess[10] = { 0, }; int coun..
가위바위보 게임 이번에는 가위바위보 게임을 만들어볼거다.srand 함수와 rand함수를 이용해서 컴퓨터와 게임을 하는 프로그램을 만들자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include #include #include #include void check_game(int saram, int computer);int point = 15000;main(){ int gamer, computer; puts("가위바위보 게임을 시작합니다."); puts("숫자를 누르고 엔터키를 치세요!!"); while (1) { printf("현재 자산 : %d원\n가위(1) 바위(2) 보..
bsearch 이진 검색 함수 이번에는 이진 검색 함수 bsearch에 대해서 알아볼것이다.bsearch 함수를 사용하려면 stdlib.h 파일은 include 해줘야 한다. 이진 검색이란?? 방대한 크기의 배열을 빠르게 검색할 수 있다. 검색의 효율은 오름차순으로 정렬된 배열에 의해서 결정이 된다.검색이 수행되는 과정은 다음과 같다. 1. 검색 키(key)가 배열의 중앙에 있는 요소와 비교한다.2개의 값이 일치한다면 검색이 수행되고, 그렇지 않다면 검색 키는 배열의 요소보다 작거나 큰 경우이다.2. 검색 키가 배열의 요소보다 작다면 일치하는 내용은 배열의 앞 부분에 위치되어 있을 것이다.검색 키가 배열의 요소보다 크다면 일치하는 요소는 배열의 뒷부분에 위치되어 있을 것이다.3. 검색은 배열의 절반을 범..
qsort(퀵 정렬) 정렬하기 이번에는 qsort 함수에 대해서 알아보자. qsort 함수를 사용하려면 stdlib.h 파일을 include 해야한다. 함수의 원형을 보자. 1void qsort(void *base, size_t num, size_t, width, int(__cdecl *compare)(const void *eleml, const void *elem2));cs ▶ base : 정렬할 배열의 번지 ▶ num : 총 배열 요소의 갯수▶ width : 배열 요소가 차지하는 크기, int형은 4바이트, double형은 8바이트▶ compare : 비교 함수, 정수값 및 문자열을 모두 비교하는 함수를 사용 가능. 함수의 원형은 이렇다. 사용법을 한번 보자. 12345678910111213#incl..
memcpy, memmove, memset 함수 구현 이번에는 memcpy, memmove 함수를 구현 해보겠다.memcpy, memmove 함수를 잘 모르면 이쪽에 들어가서 보기를 바란다. 2018/07/08 - [프로그래밍/C] - memcpy, memmove, memcmp 메모리 관련 함수 123456789101112131415161718192021222324#include #include struct tagM1{ int x, y; char buffer[30];}x1, x2;void* memcpy(void *dest, const void *src, unsigned int count);main(){ x1.x = 5; x1.y = 10; strcpy_s(x1.buffer, sizeof(x1.buffer..
strrev 문자열 거꾸로 뒤집기 이번에는 strrev 함수에 대해서 알아보겠다. 이 함수를 사용하려면 string.h 파일을 include 해야 된다.strrev 함수의 원형을 이러하다. 1char* strrev(char *string);cs 사용법을 보자. 123456789#include #include main(){ char string[100] = "aossuper8.tistory.com"; _strrev(string); puts(string);}Colored by Color Scriptercs 사용법은 _strrev(거꾸로 뒤집혀질 문자열); 이렇게 사용하면 된다. 간단하다.그럼 이 함수가 어떻게 동작하는지 구현을 보자. 1234567891011121314151617181920212..
함수 포인터 쓰는 이유?? 가장 쉬운 설명 이번에는 함수 포인터 쓰는 이유를 알아보겠다.포인터를 배울때도 이게 왜 포인터가 어떻게 쓰이는지? 왜 쓰이는지 잘 몰랐다.그 이유에 대해서는 여기에서 알아보기로 하고이 글에서는 함수 포인터 쓰는 이유에 대해서 알아보자. 어느 한 질문이 있었다.Q. 포인터를 통해 인자를 전달하는 것보다 직접적으로 함수에 전달하는 것이 효율적인거 같은데 함수 포인터는 왜 배우는 건가요?A. 함수 포인터는 일므을 모르는 함수를 호출할 때 사용합니다. 주로 "프로그램을 제작하는 그 당시에는 존재하지 않는 함수"를 호출할때 이용하죠. 예를 들면 프로그램에 플로그인 기능이 필요한 경우, 플러그인은 아직 존재하지 않고 나중에 추가 될 수 있기 때문에 프로..
strtok, strpbrk 구분자로 분리하기이번에는 strtok, strpbrk에 대해서 알아보겠다.이 함수들을 사용하려면 string.h 파일을 include 해야된다. 두개의 함수 원형을 보자. 12char* strtok(char *strToken, const char *strDelimit);char* strpbrk(const char *string, const char *strCharSet);cs 함수의 원형은 이렇다. strtok 사용법을 보자. 12345678910111213#include #include main(){ char str[100] = "aossuper8.tistory.com"; char *token, *context; token = strtok_s(str, ".", &contex..