[C] Console RPG 제작기 (1)
·
언어/C
console rpg 만들기 첫 번째 글이다. 대~~~충 그린 예상 화면이다. 어려울 것 같지만... 최선을 다해보자. 오늘은 처음이니까 main 화면만 만들어봤다. 검은 화면에 흰 글씨로 한글자씩 소개글이 나온다. void main() { int i; FILE* input = NULL; wchar_t script[100]; input = fopen("start.txt", "r"); fgetwc(input, "%s", script); for (i = 0; i < 100; i++) { script[i] = fgetwc(input); if (script[i] == EOF) break; } fclose(input); gotoxy(0, 10); for (i = 0; i < 100; i++) { printf("%..
[C] scanf로 문자열 입력 받아 길이 알아보기
·
언어/C
int main(void) { char word[100]; scanf("%s", &word); printf("%d", (int)strlen(word)); return 0; } 간단쓰. scanf로 문자열을 입력 받아서 배열에 넣고 문자열이 들어간 길이를 알아보자!
[C] 배열 크기 순으로 정렬하기
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include #include int compare(const void* a, const void* b) { return strcmp((char*)a, (char*)b); } int main() { int arr[5] = { 2, 5, 3, 6, 11 }; qsort(arr, 5, sizeof(arr[0]), compare); for (int i = 0; i < 5; i++) printf("%d\n", arr[i]); } 순서를 정해주는 compare 함수를 지정한 뒤 qsort를 사용해서 크기 순으로 정렬해주면 된다. 배열을 역순으로 정렬하고 싶다면 int compare(const void* a, const void* b) { return st..
[C] 입력 받은 수만큼 배열 생성하기
·
언어/C
int a; scanf("%d", &a); int* arr = malloc(sizeof(int) * a); 마음 같아서는 int arr[a];처럼 바로 생성하고 싶지만 C에서는 불가능한 행동이다. malloc을 이용해 배열 크기를 지정해주자.
[C] Debug Assertion Failed!
·
언어/C
디버그가 잡히지 않고 종료되는 오류다. 포인터를 제대로 사용하지 않았다는 뜻이니 포인터 부분을 다시 한 번 확인하자. int N, M; scanf("%d %d", N, M); 난 이 부분이 문제였는데, int N, M; scanf("%d %d", &N, &M); 수정을 마치고 바로 프로그램이 정상적으로 돌아왔다.
[C] 0xC0000005: 0x0000000000000003 위치를 읽는 동안 액세스 위반이 발생했습니다.
·
언어/C
scanf("%d %d", &N, &M); scanf를 하려는데 오류가 발생했다. 엑세스 위반이라는 뜻이다. 프로세스가 접근할 권한이 없는 메모리 영역에 접근하려고 할 때 발생한다. ✅ 동적 메모리를 할당하기 ✅ 할당한 메모리 내에서 메모리를 사용하기
[C] 햄버거 쌓기 게임
·
언어/C
#include #include #include int level; char patty; char cheese; char cabbage; char tomato; char mushroom; int ingredient[5] = { 0,0,0,0,0 }; int answer[6] = { 0,0,0,0,0,0 }; int myAnswer[6] = { 0,0,0,0,0,0 }; void burgerData(); void printHamburger(int inside); int main(void) { srand(time(NULL)); long startTime = 0; long prevTime = 0; long totalTime = 0; int num; burgerData(); startTime = clock();..
[C] 캐스트 연산자
·
언어/C
#include int main(void) { printf("내가 좋아하는 숫자는 %f입니다.", 3); return 0; } 3은 정수이기 때문에 %s가 아닌 %d를 사용해야 하기 때문에 위에 사진처럼 오류가 발생하며 프로그램이 정상적으로 작동하지 않는다. %s를 %d로 바꾸어도 프로그램이 정상적으로 작동하겠지만, 우리는 캐스트 연산자를 활용해볼 것이다. #include int main(void) { printf("내가 좋아하는 숫자는 %f입니다.", (double)3); return 0; } 이렇게 자료형을 변경하고 싶은 곳 앞에 괄호를 치고 바꾸어야하는 자료형의 이름을 입력해주면 위 사진처럼 정상적으로 프로그램이 작동하는 모습을 확인할 수 있다.
[C] 구조체 - 고양이 뽑기 게임
·
언어/C
#include #include #include typedef struct { char* name; int age; char* character; int level; } CAT; int collection[5] = { 0,0,0,0,0 }; CAT cats[5]; void initCats(); void printCat(int collect); int checkCollection(); int main(void) { srand(time(NULL)); initCats(); while (1) { printf("엔터를 치고 당신의 고양이를 만나보세요.\n"); getchar(); int collect = rand() % 5; printCat(collect); collection[collect] = 1; int c..
[C] 포인터 - 어항 속 물고기 게임
·
언어/C
#include #include int fishbowl[6]; int level; int* cursor; void initData(); void printFish(); void decreaseWater(long elapseTime); int checkWater(); int main(void) { long startTime = 0; long totalTime = 0; long prevTime = 0; int num; initData(); cursor = fishbowl; startTime = clock(); while (1) { printFish(); printf("몇 번 어항에 물을 주시겠습니까? : "); scanf_s("%d", &num); printf("\n"); if (num ..
[C] define 매크로 함수 사용하기
·
언어/C
같은 값을 여러번 사용하지 않고 한 단어로 사용하거나, 한 눈에 알아보기 쉽게 하기 위해서는 define 매크로 함수를 사용한다. main 함수가 실행되기 전에 #define MAX 10000 처럼 사용하면 된다. #include #define MAX 10000 int main(void) { printf("%d", MAX); return 0; } 출력값은 10000 이다. 매크로 함수에서 또 다시 함수를 사용할 수도 있다. #include #define Hi printf("안녕하세요.") int main(void) { printf("%s", Hi); return 0; } 출력값은 안녕하세요. 이다.
[C] 파일 입출력 - 비밀 일기 프로젝트
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include #define MAX 10000 int main(void) { char line[MAX]; char contents[MAX]; char password[20]; char c; printf("=== 나의 비밀일기 ===\n"); printf("비밀번호를 입력해주세요 : "); int i = 0; while (1) { c = getch(); if (c == 13) { password[i] = '\0'; break; } else { printf("*"); password[i] = c; } i++; } printf("\n\n== 비밀번호 확인중 ==\n\n"); if (strcmp(password, "a") == 0) { printf("비..
[C] 배열 - 발모제 찾기 게임
·
언어/C
#include #include #include int main(void) { srand(time(NULL)); printf("\n\n==발모제 찾기 게임==\n\n"); int answer; int treatment = rand() % 4; // 발모제 결정 int prevShowBottle = 0; int curShowBottle = 0; for (int i = 1; i
[C] 함수 - 컴퓨터와 가위바위보하기
·
언어/C
#include #include // 난수 지정을 위해 필요함 void win(); void defeat(); int main(void) { srand(time(NULL)); int choice; char *array[3] = { "가위", "바위", "보" }; printf("\n\n== 가위바위보 게임 ==\n\n"); printf("가위는 1, 바위는 2, 보는 3입니다. 하나를 선택하세요 : "); scanf_s("%d", &choice); printf("\n당신 : %s\n", array[choice - 1]); if (choice 3) { printf("잘못된 값입니다. 다시 시도해주세요."); exit(0); } int computer = rand() % 3; i..
[C] 조건문 - 업 다운 게임 만들기
·
언어/C
#include #include // rand() 함수 포함 라이브러리 #include // time() 함수 포함 라이브러리 int main(void) { srand(time(NULL)); // 매번 다른 난수 int number = (rand() % 100) + 1; printf("난수는 %d 입니다.\n\n", number); int answer = 0; int chance = 5; while (1) { printf("숫자를 맞혀보세요. 기회는 %d번 입니다. : ", chance--); scanf_s("%d", &answer); if (answer > number) { printf("Down\n"); } else if (answer < number) { printf("Up\n"); } else i..