본문 바로가기

C언어 포인터7

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언어 - [malloc, 메모리할당, memset] ▣ 메모리를 할당하려면 먼저 #include 를 선언해주세요. 그리고 주소를 저장하는 변수 포인터에 malloc(sizeof(int))함수로 메모리를 할당해주세요. 그럼 int 4byte만큼 메모리가 할당되고 그 메모리에 주소 값이 포인터에 대입이 됩니다. 그리고 %p 형식으로 메모리 주소를 확인해보면 이렇게 각각에 주소가 나오는 걸 확인할 수 있습니다. ▣ 여기서 기억해야 할껀 malloc()함수의 원형 형태는 void * malloc(size)입니다. 그렇기 때문에 void 반환형이 없다라는 자료형이므로 만약 int*주소를 반환하고 싶다면 (int*)malloc(size)로 코딩을 진행해야 합ㄴ디ㅏ. ▣ 직접 중단점을 찍고 디버그를 해서 메모리를 확인해보겠습니다. p2에 값을 확인해보면 이렇게 4by.. 2021. 5. 17.
C언어 - [구조체, 구조체 포인터, 구조체배열, 구조체포인터배열] ▣ 구조체는 쉽게 생각하면 c언어로 배열을 만들 때 하나에 자료형으로 선언하고 사용합니다. int game[10] 이렇게 하나에 자료형으로 사용하게 되면 우리가 game에 대한 여러 가지 정보를 관리하려면 이렇게 char gameName [10], int gameNumber [10], int gameScore [10] 이런 식으로 하나하나 선언해주고 관리해야합니다. 이렇게 되면 코드가 너무 길어지고 관리하는 게 복잡할 수 있습니다. 그래서 사용하는게 바로 구조체입니다. ▣ 먼저 구조체는 함수 외부에서 선언해야 합니다. struct라는 자료형식으로 지정해주고 이름을 정해줍니다. 구조체 이름은 나중에 함수안에서 선언할 변수와 이름이 헷갈릴 수 있기 때문에 대문자로 시작해주세요. 이 시작이 나중에 객체지향언어.. 2021. 5. 16.
C언어 27장(c언어 게임만들기_4.0 , 게임오버, 함수 응용, 배열응용, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 저번장까지 완성해 보셨나요? 여러분들이 만든 c언어 게임이 궁금하네요 ^^ 혹시 만드시다가 피드백이 필요하신 분은 댓글 남겨주세요~~ ▣ 그럼 오늘은 플레이어 HP가 0이면 게임오버가 나오게 해 보겠습니다. 먼저 ▣ 게임 메뉴 콘솔 창에 크기를 조절해 주겠습니다. 이건 우리가 처음 시간에 하지 않았습니다. 그건 다시 게임 메뉴로 돌아올 상황이 없기 때문에, 기본 콘솔 창설 정으로 시작했지만, 이번에는 게임오버를 호출하고 다시 게임 메뉴로 돌아올 상황이 있기 때문에, 콘솔 창에 크기를 지정해주었습니다. 그렇게 하지 않으면, 우리가 게임 씬에서는 콘솔 창을 작게 정했기 때문에, 게임 메뉴 글자가 작아서 깨져서 보이겠죠? 설정한 다음에 ▣ 이번에는 전역 변수로 가서 몬스터에 파워를 지정해주겠습니.. 2020. 6. 26.
C언어 18장_3(포인터, 다중포인터, 다차원 배열) ▣ 안녕하세요^^ 저번 시간에 포인터 두 번째 장 숙제 잘해보셨나요?? 여러분들에 무거운 얼굴이 보이네요 ^^;;; ▣ 하지만 여러분들은 지금 이 장을 열었다는 건 완벽하게 이해하지는 못해도 어쨌든 끝까지 포기하지 않고 하고 계시다는 이야기겠죠? 잘하시고 계십니다. 포기하지 마세요!!! 할 수 있습니다!!! 제가 이번장에서 포인터를 끝내도 다른 부분을 진행할 때 아니면 많이 틀리는 예제들이나 문제들을 한번 같이 공부해보는 장도 만들겠습니다. 그러니 한 번에 이해하지 못했다고 해서 실망하지 마세요. ▣ 그리고 제가 계속 말씀드리지만, 꼭 제 블로그로만 공부를 끝내시면 안 됩니다. 모든 분들이 가르치는 방법과 노하우와 그리고 경험이 다르기 때문에 꼭 좋은 여러 강사님들 자료를 보시면서 함께 공부해주세요. 제.. 2020. 5. 15.
C언어 17장_2(포인터, 메모리, 메모리할당, 정적변수, 리틀엔디안, malloc, memcpy, memcmp, memset, strstr) ▣ 안녕하세요^^ 저번장에 포인터 숙제 열심히 해보셨나요?? 꼼꼼하게 읽으면서 따라오셨다면 충분히 하셨을 거라 생각합니다. 그럼 오늘은 포인터 두번째로 공부해보겠습니다. 먼저 저번장에서 이야기했던 부분을 한번 보충해서 설명해보겠습니다. ▣ 저번장에 이 코드를 기억하시나요? 제가 *pList안에 number에 주소를 넣고 우리가 디버 그해서 pList메모리 주소에 있는 값을 확인했습니다. 그때 제가 주소값이 거꾸로 들어간 것에 대해 다시 설명해드린다고 했습니다. 이 부분을 설명해보겠습니다. ▣엔디언 이라는 말이 있습니다. 위키백과에서는 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte .. 2020. 5. 13.
C언어 16장_1(포인터, 메모리) ▣ 안녕하세요 ^^ 저번장에 함수 해보셨나요?? 어렵죠? 많이 ㅠ.ㅠ 하지만 포기하지 마세요!!! 하실 수 있습니다. 제가 처 음장에서 이야기한 것처럼 코딩을 꼼꼼하게 읽는 훈련을 하시면서 반복적으로 사고하고 코딩하시면 할 수 있습니다. 어려우신 게 있으시면 댓글 남겨주세요. ▣ 자 오늘은 C언어를 공부할 때 가장 어려워하는 포인터를 진행해보겠습니다. 포인터를 진행하면서 메모리에 대한 이야기도 하겠습니다. 이 부분은 할 이야기가 많아 챕터를 나누겠습니다. ▣ 제가 이걸 준비하면서 여러 책과 좋은 강사님들에 자료를 많이 읽어보고 저도 다시 공부해보았습니다. 가능하면 쉽게 설명하도록 하겠지만 여러분들이 꼭 하셔야 할 건 꼼꼼하게 코딩을 읽는 훈련을 하셔야 한다는 겁니다. 그냥 보고 무작정 어렵다고 포기하시면.. 2020. 5. 11.