본문 바로가기

[ C언어 ]40

C언어 [파일입출력] ▣ fopen() : 파일 열고 생성 fopen() 함수원형 : FILE*(반환형 FILE포인터) fopen(const char*name(위치 및 파일 이름), const char*mode(모드지정)); ▣ 모드 종류 r : 읽기 모드 w : 쓰기(파일이 존재하면 기존 내용이 삭제된다.) a : 추가(파일이 있으면 데이터가 끝에 추가된다.) r+ : 읽기와 쓰기 모드(파일이 존재해야 한다.) w+ : 읽기와 쓰기 모드(파일이 존재하면 새 데이터가 기존 데이터를 덮어쓴다.) a+ : 읽기와 추가 모드 (파일이 존재하면 데이터가 파일 끝에 추가된다. 읽기는 어떤 위치에서나 가능) ▣ fputc() : 한 글자를 파일에 쓰는 함수 fputc() 함수원형 : fputc('문자', FILE*) ▣ fclose(f.. 2023. 2. 15.
C언어 - [Beep함수, 음파] ▣ Beep()함수를 사용하려면 우선 헤더를 정의해주세요. ▣ 그리고 Beep()함수에 매개변수 값을 조절하며 음정을 만들고 음악을 만들어보세요. 코드는 순차적(순서대)으로 작동합니다. 2022. 8. 19.
C언어 - [#pragma] ▣ 안녕하세요. 이번장에서는 #pragma를 공부해보겠습니다. #pragma는 컴파일러 기능을 지정하는 비표준 전처리기입니다. #define과 비슷하지만 다른 기능들이 있으니 하나하나 코드를 작성해보겠습니다. ▣ 비주얼스튜디오를 기준으로 scanf() 함수를 작성하고 디버그를 하면 이렇게 경고가 나오는 걸 확인할 수 있습니다. ▣ scanf_s() 함수를 사용해서 경고를 해결할 수 있지만, 이렇게 #define _CRT_SECURE_NO_WARNINGS 를 맨 위에 작성하고 디버그를 하면 경고 없이 scanf() 함수를 사용할 수 있습니다. ▣ 그리고 #pragma warning(disable : 4996) 이렇게 하면 컴파일에서 4996 오류를 무시하고 진행하게 됩니다. ▣ 또 #pragma once를.. 2022. 2. 15.
C언어 - [헤더파일] ▣ 안녕하세요. 이번장에서는 헤더 파일이 무언인지 알아보겠습니다. ▣ 먼저 test.c로 소스파일을 추가해서 코드를 작성해보겠습니다. 반환형은 int형으로 매개변수는 두개, 리턴 값으로 두 매개변수의 값을 반환하는 코드입니다. ▣ 그리고 h헤더파일을 추가하여 int sum(int num1, int num2); 함수에 존재를 선언하는 코드를 작성합니다. ▣ 그리고 #include "testh.h"를 선언합니다. 그러면 아까 test에서 정의해서 만들었던 함수를 사용할 수 있습니다. sum() 함수를 사용하여 매개변수 값을 전달하면 값을 받아와서 출력하면 더한 값이 출력되는걸 확인할 수 있습니다. ▣ 이렇게 헤더파일은 메뉴판, 선언문 정도 생각하시면 됩니다. 코드를 작성하여 다른 소스코드에 h를 사용하고 접.. 2022. 1. 26.
C언어 - [동시실행, 스레드, 쓰레드, Thread] ▣ 안녕하세요. 이번장에서는 스레드를 공부해보도록 하겠습니다. 우선 스레드(쓰레드)가 무엇인지 이야기해 보록 하겠습니다. 스레드는 프로세서 내에서 실행되는 흐름, 단위, 갈래를 이야기합니다. ▣ 그럼 여기서 또 다른 질문이 생깁니다. 프로세서가 무엇일까요? 우리가 디버그로 컴파일 과정을 진행하면 링커를 통해서 exe로 프로그램을 만듭니다. 프로세서는 이런 프로그램을 실행되서 돌아가는 상태 컴퓨터가 일하고 처리하는 상태를 이야기합니다. ▣ 그럼 스레드는 무엇일까요? 프로세서는 하나의 일만 처리할 수 있습니다. 그래서 여러개의 스레드로 여러 개에 일을 처리하게 합니다. 이걸 멀티스레드라고 합니다. ▣ 윈도우에서 CTRL + ALT + Delete 키를 누르면 이렇게 프로세서에 여러개의 프로그램을 돌리고 있는.. 2021. 9. 15.
C언어 - [소리재생, Beer, _getch] ▣ 안녕하세요. 이번장에서는 windows.h를 이용하여 음파 소리를 재생하는 코드를 진행하겠습니다. ▣ 먼저 #include로 헤더들을 포함시키도록 하겠습니다. 는 콘솔에 관련된 헤더를 가져옵니다. while문안에 _getch()함수로 입력을 받습니다. 이건 버퍼를 거치치않고 바로 키값을 반환해주는 함수입니다. 키를 누르면 바로 소리가 나오게 코드를 작성하기 위함입니다. ▣ 를 추가해주세요. 그럼 Beep()함수를 사용할 수 있습니다. Beep(음파:주파수, 소리 지속시간-밀리초) 매개변수로 호출이 가능합니다. 그리고 switch()에서 case 'a': 키를 눌렀을 때 Beep(260, 500);이라고 하면 260 도의 음파를 의미하며 500으로 0.5초를 지속하게 합니다. ▣ 이렇게 a부터 k까지 .. 2021. 8. 31.
C언어 - [화면지우기, 잠시대기, Sleep, cls, Windows.h] ▣ 안녕하세요. 이번장에서는 콘솔 창에 출력한 내용을 삭제하는 함수와 코드를 잠시 대기하게 하는 함수를 공부해보겠습니다. ▣ 우선 간단하게 3가지 문장을 출력해보겠습니다. 그리고 3개가 한꺼번에 출력되는걸 확인할 수 있습니다. 이제 이걸 1초마다 한개씩 추가해서 출력해보겠습니다. ▣ 먼저 #include 을 작성해주세요. 그리고 printf()함수 밑에 각각 Sleep()이라는 함수를 호출합니다. 밀리초 단위를 매개변수 값으로 넣어서 호출하면 되는데 1000을 넣게되면 1초를 기다리고 다음 코드를 진행하게 됩니다. 코드를 완성한 후에 디버그를 해보면 안녕이 나오고 1초 뒤에 나는 C언어야 ^^ 1초 뒤에 우린 함께 C언어 공부해볼까?...라는 문구가 나오는 걸 확인할 수 있습니다. ▣ 그럼 이번에는 pr.. 2021. 7. 22.
C언어 - [글자 색 변경, 콘솔창 크기, 콘솔창 색, 글자 배경색] ▣ 먼저 윈도우 운영체제 기준으로 콘솔 창 크기와 콘솔 창 색을 변경해보겠습니다. #include 를 선언해주세요. 그리고 system("mode con:cols=30 lines=30"); 형식으로 system() 함수 매개변수 안에 문자열 형식으로 mode con을 하게 되면 콘솔에 모드를 바꾼다라는 이야기이고 cols 가로, lines 세로를 변경하는 크기를 의미합니다. 그리고 system("color 30")처럼 콘솔 창에 색을 지정할 수도 있습니다. ▣ 글자에 색과 글자에 배경색을 변경하려면 우선 함수를 선언 및 정의를 해야 합니다. void ColorSet() 함수로 만들고 (int backColor, int textColor)로 매개변수를 각각 지정해줍니다. 그리고 HANDLE 윈도에 핸들 값.. 2021. 6. 2.
C언어 - [malloc, 메모리할당, memset] ▣ 메모리를 할당하려면 먼저 #include 를 선언해주세요. 그리고 주소를 저장하는 변수 포인터에 malloc(sizeof(int))함수로 메모리를 할당해주세요. 그럼 int 4byte만큼 메모리가 할당되고 그 메모리에 주소 값이 포인터에 대입이 됩니다. 그리고 %p 형식으로 메모리 주소를 확인해보면 이렇게 각각에 주소가 나오는 걸 확인할 수 있습니다. ▣ 여기서 기억해야 할껀 malloc()함수의 원형 형태는 void * malloc(size)입니다. 그렇기 때문에 void 반환형이 없다라는 자료형이므로 만약 int*주소를 반환하고 싶다면 (int*)malloc(size)로 코딩을 진행해야 합ㄴ디ㅏ. ▣ 직접 중단점을 찍고 디버그를 해서 메모리를 확인해보겠습니다. p2에 값을 확인해보면 이렇게 4by.. 2021. 5. 17.
C언어 - [공용체, 열거형, 구조체비트필드] ▣ 우선 공용체는 쉽게 이야기하면 메모리를 공용으로 사용하는 구조체라고 생각하시면 됩니다. union으로 구조체와 동일하게 선언해주시고, 안에 변수를 선언해주세요. 그리고 main함수에서 union Game game;으로 정의한 후에 printf() 함수로 각각에 메모리 크기를 출력해보세요. 그럼 메모리 크기가 가장 큰 자료형 크기로 공용체가 정의되어 있음을 확인할 수 있습니다. ▣ 같은 메모리를 사용하는지 값을 넣어서 확인해보겠습니다. char, short, int 형 중에 가장 큰 자료형인 int game.score에 값을 넣어보겠습니다. 숫자 앞에 0x가 있으면 16진수입니다. 형식 지정자도 % x를 해야지 16진수로 출력되게 됩니다. ▣ 출력해보면 나누어져 값이 들어가 있는 걸 확인할 수 있습니다.. 2021. 5. 17.
C언어 - [구조체, 구조체 포인터, 구조체배열, 구조체포인터배열] ▣ 구조체는 쉽게 생각하면 c언어로 배열을 만들 때 하나에 자료형으로 선언하고 사용합니다. int game[10] 이렇게 하나에 자료형으로 사용하게 되면 우리가 game에 대한 여러 가지 정보를 관리하려면 이렇게 char gameName [10], int gameNumber [10], int gameScore [10] 이런 식으로 하나하나 선언해주고 관리해야합니다. 이렇게 되면 코드가 너무 길어지고 관리하는 게 복잡할 수 있습니다. 그래서 사용하는게 바로 구조체입니다. ▣ 먼저 구조체는 함수 외부에서 선언해야 합니다. struct라는 자료형식으로 지정해주고 이름을 정해줍니다. 구조체 이름은 나중에 함수안에서 선언할 변수와 이름이 헷갈릴 수 있기 때문에 대문자로 시작해주세요. 이 시작이 나중에 객체지향언어.. 2021. 5. 16.
C언어 - [스톱워치, 타이머, 초 카운트, time] ▣ 헤더 파일은 Sleep() 함수를 사용하기 위해, time() 함수를 사용하기 위해 선언해 주세요. 먼저 endTime에 (unsigned)time(NULL)함수를 넣어주세요. (unsigned) 부호 비트가 0으로 시간 값을 음수가 아닌 양수로만 나타내기 위함입니다. 그럼 1970년 1월 1일부터 지금까지에 시간을 초로 반환해 줍니다. 이 값에 6을 더해줍니다. 이걸로 우리가 원하는 시간까지 초를 제한할 겁니다. ▣ 그리고 while문을 통해 startTime에 현재 시간을 넣어주세요. 그럼 whlie문을 통해 계속 반복을 하면 숫자가 초마다 늘어납니다. 그리고 조건문을 통해 0초가 되면 종료되게 코드를 완성했습니다. 그리고 확인을 하면 ▣ 이렇게 1초마다 줄어들면서 0초까지 반복되고 종료되는걸 확.. 2021. 5. 11.
C언어 - [글자 위치 이동, 커서 이동 코드] ▣ 커서에 위치를 지정하려면 우선 windows.h 헤더파일 선언하고 함수 선언 및 정의를 해야한다. 함수에 매개변수에 x, y 값을 받을 매개변수를 선언하고 HANDLE 자료형을 선언한다. 이건 쉽게 이야기하면 windows에 도구를 사용하기 위한 키값이라고 생각하시면 됩니다. GetStdHandle(STD_OUTPUT_HANDLE) 출력하는 핸들 값을 handle에 정의하고 COORD 는 포지션을 구조체로 지정한다. pos.X = x, pos.Y = y 값으로 매개변수에 x, y 값으로 대입한다. SetConcoleCursorPosition(handle, pos) 커서를 지정하는 구조체에 매개변수 처음 값은 STD_OUTPUT_HANDLE 값과 COORD 포지션에 값을 각각 넣어주고 ▣ 메인 함수에서.. 2021. 5. 6.
C언어 27장(c언어 게임만들기_4.0 , 게임오버, 함수 응용, 배열응용, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 저번장까지 완성해 보셨나요? 여러분들이 만든 c언어 게임이 궁금하네요 ^^ 혹시 만드시다가 피드백이 필요하신 분은 댓글 남겨주세요~~ ▣ 그럼 오늘은 플레이어 HP가 0이면 게임오버가 나오게 해 보겠습니다. 먼저 ▣ 게임 메뉴 콘솔 창에 크기를 조절해 주겠습니다. 이건 우리가 처음 시간에 하지 않았습니다. 그건 다시 게임 메뉴로 돌아올 상황이 없기 때문에, 기본 콘솔 창설 정으로 시작했지만, 이번에는 게임오버를 호출하고 다시 게임 메뉴로 돌아올 상황이 있기 때문에, 콘솔 창에 크기를 지정해주었습니다. 그렇게 하지 않으면, 우리가 게임 씬에서는 콘솔 창을 작게 정했기 때문에, 게임 메뉴 글자가 작아서 깨져서 보이겠죠? 설정한 다음에 ▣ 이번에는 전역 변수로 가서 몬스터에 파워를 지정해주겠습니.. 2020. 6. 26.
C언어 26장(c언어 게임만들기_3.5 , 랜덤함수, time함수, 함수 응용, 배열응용, 전역변수, 조건문 활용, 반복문활용, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 저번장까지에 내용을 활용하여 게임 잘 만들어보셨나요? 지금까지 포기하지 않고 열심히 달려오신 분은 분명 많이 실력이 늘었을 거라 생각합니다. 코딩은 무언가 만들어갈 때 실력이 가장 빠르게 향상됩니다. 그러니 포기하지 마시고 끝까지 진행해 주세요. ▣ 그럼 오늘은 플레이어가 레벨업을 하면 파워가 오르고 그 파워에 따라 몬스터한테 공격을 할 수 있고, 그리고 몬스터가 랜덤으로 우리가 공격했을 때 아니면 몬스터가 살아있는 게임씬함수로 호출될 때 우리를 공격하는 코드를 간단하게 해 보겠습니다. ▣ 다시 말씀드리지만, 제 코딩이 정답이 아닙니다. 저는 정말 쉽게 만들자라는 생각으로 만들었습니다. 그러니 코드에 활용과 최적화 그리고 가독성을 생각하시면서 여러분들만에 게임코딩을 만들어주세요. 제가.. 2020. 6. 19.
C언어 25장(c언어 게임만들기_3, 배열응용, 응용 함수, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 저번장 숙제는 다해보셨나요? 이제 게임에 틀이 거의 완성되어 가고 있네요. 오늘은 플레이어가 몬스터를 죽이면 경험치가 오르고 레벨업을 하는 아주 간단한 함수를 구현해 보겠습니다. ▣ 매 장마다 말씀드리지만, 제가 만든 코딩이 정답이 아닙니다. 정말 쉽게 게임을 만들기 위해서 가독성과 최적화를 생각하지 않고 만들었기 때문에, 이점 참고해주시고 공부하면서 여러분들만에 코딩으로 바꿔서 게임을 만들어보세요. ▣ 먼저 게임 정보 함수에 플레이어에 레벨과 경험치를 표현해주는 함수를 추가해 보겠습니다. 경험치를 함수 표현한 하는 이유는 우리가 경험치 게이지를 배열로 표현해야 하기 때문입니다. ▣ 경험치게이지를 배열로 만들어서 색을 넣고 표현했습니다. 경험치에 변수값에 따라 반복하게 하게 하는 형식.. 2020. 6. 12.
C언어 24장(c언어 게임만들기_2.5, 응용 함수, 전역변수, 조건문 활용, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 게임 잘 만들고 계신가요? 오류가 나고 많이 안 되는 부분들이 있으셨을 거라 생각합니다. 그 과정이 필요합니다. 코딩은 자꾸 틀리고 다시 읽어보고 고치고 하는 과정들이 필요합니다. 인내해 주세요~~ 어느새 여러분들이 많이 성장했을 겁니다. 도움이 필요하시면 방명록이나 댓글 남겨주세요~~ ▣ 오늘은 간단하게 몬스터가 등장하고 몬스터를 공격하는 코딩을 간단하게 진행해 보겠습니다. ▣ 공부하시다가 주의하실 부분은 최적화와 코딩에 가독성을 많이 생각하지 않고, 단순히 쉽게 게임을 만든다라는 목표로 게임 만들기 장을 구성했으니 이점 참고하시고 공부해 주세요~~ 제 코딩이 정답이 절대 아닙니다!!! ▣ 먼저 게임 정보를 좀 더 추가해 보겠습니다. player Hp와 공격 및 아이템 획득 문구를 .. 2020. 6. 8.
C언어 23장(c언어 게임만들기_2, 응용 함수, 전역변수, 조건문 활용, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 저번장에서 배웠던 내용을 가지고 게임 잘 만들어 보셨나요?? 오늘은 저번장에 있는 내용을 활용하여 게임에 함수를 적용해보는 시간을 가져보겠습니다. ▣ 참고로 다시 한번 말씀드리지만 제 코딩이 정답은 아닙니다. 그리고 저는 누구나 쉽게 만들 수 있게 하기 위해서 쉬운 코드를 위주로 진행했습니다. 그러니 코딩에 정리 및 활용은 여러분들에 몫입니다. 잊지 마시고. 제 코딩은 참고만 해주세요. ▣ 저번장에서 배웠던 색을 넣는 함수를 우리가 만든 게임 프로젝트에 넣어보겠습니다. 우선 여기서 주의해야할건 매개변수 처음값이 배경색이라는 점 잊지 마세요^^ 반대로 하시면 안 됩니다. 그리고 2020. 6. 2.
C언어 22장(c언어 게임만들기_1.5, 응용 함수, 매개변수, enum응용, GetStdHandle, 콘솔글자색 바꾸기) ▣ 안녕하세요 ^^ 저번 시간 게임 만들기 잘해보셨나요?? 어떻게 게임을 만들고 계신지 무척 궁금하네요 ^^ 혹시 피드백이나 따로 궁금하신 게 있으시면 댓글 남겨주세요 ^^ ▣ 오늘은 저번장에 이어서 게임 만들기에서 필요한 글꼴과 글꼴 배경색을 바꾸는걸 함께 공부해보겠습니다. 간단하면 간단할 수 있지만 조금 응용적인 부분이 있어서 장를 나눠서 1.5로 정했습니다. 그러니 새로운 프로젝트를 만들어 따로 실습을 해보시고 게임 만들기에서 활용해보세요. ▣ 자 먼저 색을 바꿀 함수를 하나 만들어보도록 하겠습니다. 함수에 자료형을 반환할 값은 없으니 void로 해줍니다. 그리고 나중에 우리가 컬러에 색에 값을 각각 받아와야 하니 때문에 int형으로 배경색과 글꼴 색을 받아오는 매개변수를 만들었습니다. 그리고 우리.. 2020. 5. 28.
C언어 21장(c언어 게임만들기_1, 응용 함수, HANDLE, mmsystem, Windows,h, PlaySound, system함수) ▣ 안녕하세요^^ 저번장에 숙제해보셨나요?? 네 모두 다 해보셨을 거라 생각하고 오늘은 간단한 게임 만들기 첫 번째 장을 진행해보겠습니다. 간단한 게임이지만 가능한 쉽게 만들려고 노력했습니다. 하지만 많은 코딩들이 들어가 어려울 수 있으니 천천히 따라와 주세요. ▣ 그리고 제가 만든 게임은 여러분들이 만들 코딩에 하나에 방법일 뿐이지 정답이 아닙니다. 이걸 함께 공부하고 여러분들만에 게임을 만들어보세요. 코딩은 정답이 없습니다. 저는 그렇게 생각합니다. ▣ 이렇게 함수를 하나 만들어서 printf로 문 모양을 출력해보겠습니다. 모양은 여러분들이 원하시는 기호 아무거나 하셔두됩니다. 그리고 main함수를 통해 우리가 만든 사용자 함수를 호출해주세요. 당연히 선언하는 거 잊지 마시고요. 그럼 문 모양이 나오.. 2020. 5. 26.
C언어 20장(파일입출력, fopen, fclose, fprintf, fscanf_s, fgets, fputs, fgetc, fputc, fread, fwrite) ▣ 안녕하세요^^ 저번 시간에 숙제 잘해보셨나요?? 이제 코딩이 많이 능숙 해시셨죠?? 하지만 아직 어렵다고요? ^^ ▣ 네 당연한 것입니다. 프로그램을 가르치고 게임을 개발하는 저도 매일 공부하는데 어려운 거 같습니다. ^^ 그러니 함께 공부하며 파이팅해요. ▣ 오늘은 파일 입출력을 공부해보겠습니다. 표준 입출력이랑 비슷한 부분이 많아서 어렵지 않을 겁니다. 그러니 꼼꼼하게 읽으면서 실습하시면서 공부해주세요. ▣ 자 먼저 파일을 제어? 하기 위해 FILE이라는 구조체를 사용해야 합니다. FILE에서 오른쪽 마우스를 클릭하고 정의를 들어가면 이렇게 구조체인 것을 확인할 수 있습니다. ▣ FILE 구조체를 *fp라는 포인터로 선언 및 정의를 하고, fopen라는 함수를 이용해서 파일을 열어 모드를 적어 읽.. 2020. 5. 20.