코딩자율학습 16

[코딩자율학습] 20일차 드디어 끝 그리고 후기 / 나도코딩의 C언어 입문

드디어 끝!!! 20일차 분량은 파일입출력 마무리와 셀프체크 프로그램이다. 파일 입출력 정리는 전에 했고 셀프체크 프로그램은 천천히 만들어보려해 후기 먼저 남긴다. 나는 어쩌다가 코딩 자율학습단 모집을 봐서 시작하게 되었다. 사실 내가 공부하고 있는 언어가 아니라서 학습을 하면서도 내가 지금 이거를 공부하고 있는게 맞을까? 생각이 많이 들었지만 그래도 시작한 이상 끝을 보자 하고 1달동안 참여하게 되었다. 책 두께가 보통정도는 됐는데 그래도 하루에 정해진 공부할 양이 생각보다 많지 않아서 끝낼 수 있었던 것 같다. 📌 코딩자율학습단 나도코딩 C언어 입문 후기 1. 매일 공부하는 습관이 생긴다. 코딩자율학습으로 공부하기 전에는 거의 주말에 공부를 하거나 평일에도 하루 이틀 정도만 학습하는데 시간을 할애했던..

언어/C 2024.03.28

[코딩자율학습] 19일차 프로젝트 비밀 일기 프로그램

#define _CRT_SECURE_NO_WARNINGS #include #include #include #define MAX 10000 //매크로 정의 int main(void) { char password[20]; //입력받은 비밀번호 저장 배열 선언 char c; // 입력받은 비밀번호 확인용(마스킹 효과) int i = 0; //password 배열의 인덱스용 변수 char line[MAX];//파일에서 읽어 온 내용 저장 char contents[MAX] = "";// 일기장에 입력한 내용 저장 (빈값으로 초기화) printf("비밀 일기에 오신 것을 환영합니다.\n"); //안내 문구 printf("비밀번호를 입력하세요.(최대 20자리)"); while (1) { //비밀번호 입력받기 c = ..

언어/C 2024.03.28

[코딩자율학습] 18일차 파일입출력

fputs() 함수로 파일 쓰기 FILE * 포인터명 = fopen(파일명, 파일모드); 파일에서 데이터를 읽고 쓸 때는 먼저 fopen()함수로 파일을 열어서 파일 포인터를 얻어야함. 파일포인터는 fopen()함수를 통해 무슨 파일을 열었는지, 어디까지 읽었는지 등의 정보를 담음. ** 텍스트는 사람이 읽을 수 있는 문자열 바이너리 데이터는 컴퓨터가 읽을 수 있는 0과 1로 된 데이터 //형식 fputs(문자열, 파일포인터) (파일 생성) #define _CRT_SECURE_NO_WARNINGS #include int main(void) { FILE* file = fopen("C:\\\\Users\\\\홍시\\\\Desktop\\\\test1.txt", "wb"); if (file == NULL) { ..

언어/C 2024.03.27

[코딩자율학습] 17일차 너 내 도도독 집사가 되어라

(전체코드) #include #include #include typedef struct { //고양이 정보를 담은 구조체 정의 char* name; int age; char* character; int level; //level 5가 키우기 제일 어려움 } CAT; CAT cats[5]; // 큰 상자에 있는 고양이 목록을 배열로 선언 int collection[5] = { 0, 0, 0, 0, 0 }; //고양이 있으면 1 없으면 0 void initCats(); //고양이 정보 초기화 함수 선언 void printCat(int selected); //뽑은 고양이 정보 출력 함수 선언 int checkCollection(); //모든 고양이 확인 함수 선언 int main(void) { srand(ti..

언어/C 2024.03.26

[코딩자율학습] 16일차 구조체

구조체란 #include int main(void) { char* name = "나도게임"; int year = 2022; int price = 50; char* company = "나도회사"; char* name2 = "너도게임"; int year2 = 2022; int price2 = 100; char* company2 = "너도회사"; return 0; } 정보를 하나로 관리하면 좋을 때 구조체 를 사용. //형식 struct 구초제명 { 자료형1 변수명1; 자료형2 변수명2; 자료형3 변수명3; ... }; struct GameInfo { char* name; int year; int price; char* company; }; GameInfo 의 변수들은 각각 GameInfo 구조체를 구성하는 ..

언어/C 2024.03.25

[코딩자율학습] 15일차 동물카드 뒤집기 프로젝트

#include #include // 헤더 파일 추가 #include // 헤더 파일 추가 // 전역변수 int arrayAnimal[4][5]; //카드 배열 선언, 카드 20장인 2차원 배열 선언 char* strAnimal[10]; //카드에 표시할 동물 이름 배열 (동물 이름 10개) int checkAnimal[4][5]; //카드 뒷면, 앞면 확인 배열 선언 // 함수 선언 void initAnimalArray(); //카드 배열 초기화 함수, 게임을 시작하면 카드는 모두 뒷면, 배열의 모든 요소에 같은 값을 넣음. void initAnimalName(); //동물 이름 배열 초기화 void shuffleAnimal(); //카드 섞기 함수 선언 int getEmptyPosition(); //..

언어/C 2024.03.24

[코딩자율학습] 14일차 다차원 배열

다차원 배열이란? 1차원 배열 int i; int arr[5]; 다차원 배열 1차원 배열에 배열을 하나 이상 추가한 2차원, 또는 그 이상의 배열을 의미 (이건 2차원 배열) int arr2[2][5] //형식 자료형 배열명[세로크기][가로크기]; 2차원 배열은 크기를 뒤부터 읽어서 arr2[2][5]는 5개의 연속된 메모리 공간을 가진 1차원 배열이 2개 있다는 뜻 이 배열의 총 요소는 5 * 2 = 10개 (이건 3차원 배열) int arr4[3][3][3]; // 총요소 3 * 3 * 3 = 27개 실무에서는 2,3차원배열까지 사용하고 그 이상은 잘 사용하지 않음. 다차원 배열 다루기 다차원 배열 초기화하기 //1차원 배열 초기화 int arr[5] = {1, 2, 3, 4, 5}; //2차원 배열..

언어/C 2024.03.21

[코딩자율학습] 13일차 프로젝트 어항에 물주기

전체코드 #include #include #include //전역변수 선언 int level; // 레벨 int arrayFish[6]; // 어항 int* cursor; // 어항 배열에 접근해야하니까 포인터 변수 사용. //함수 선언 void initData(); // 게임 초기화 void printfFishes(); //어항 물 높이 출력 함수 void decreaseWater(long elapsedTime); //어항의 물을 증발(감소)시키는 함수 선언 int checkFishAlive(); //모든 물고기가 죽었는지 확인 함수 int main(void) { long startTime = 0; // long은 int와 같이 정수를 담을 때 사용, 시간을 다룰 때 주로 long을 사용 int num..

언어/C 2024.03.20

[코딩자율학습] 12일차 포인터

📌 변수와 메모리 #include int main(void) { int 철수 = 1; int 영희 = 2; int 민수 = 3; printf("철수네 주소: %p, 암호 : %d\\n", &철수, 철수); //철수네 주소: 0000003D3211F8E4, 암호 : 1 a: 10, b : 20 swap() 함수 안 => a: 20, b: 10 swap() 함수 호출 후 => a: 10, b : 20 함수에서는 a와 b가 값이 바꼈는데 호출 후의 값에는 그대로임. 왜 그럴까??? 실제로는 두 변수 자체가 아닌 두 변수의 값만 전달해서 그럼. 무슨 소리냐면 int main(void) { int a = 10; int b = 20; printf("a의 주소: %p\\n", &a); printf("b의 주소: %p..

언어/C 2024.03.19

[코딩자율학습] 11일차 프로젝트: 자라나라 머리머리

#include #include #include //난수 생성하니까 추가 int main(void) { srand(time(NULL)); int treatment = rand() % 4; //약병 4개 중 하나 선택해야하니까 %4로 난수 생성 printf("\n\n == 자라나라 머리머리 == \n\n"); int cntShowBottle = 0; //이번 회차에 조합할 약병 개수 int prevCntShowBottle = 0; // 앞 회차에서 조합한 약병 개수 //3회 테스트 for (int i = 1; i 1 if (randBottle == treatment) { isIncluded = 1; // 진짜 발모제가 포함됨. } } else { // 이미 선택된 약병이면 중복이므로 다시 선택 j--; /..

언어/C 2024.03.18