본문 바로가기

[ C언어 ]/- C언어 실습연습12

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언어 - [헤더파일] ▣ 안녕하세요. 이번장에서는 헤더 파일이 무언인지 알아보겠습니다. ▣ 먼저 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.