분류 전체보기
-
[C언어/자료구조] 전화번호부 v4.0 (인프런)CS/자료구조&알고리즘 2020. 1. 13. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v4.0의 개선사항 https://skm1104.tistory.com/29 전화번호부 v1.0 https://skm1104.tistory.com/30 전화번호부 v2.0 https://skm1104.tistory.com/31 전화번호부 v3.0 v1.0 ~ v3.0 에서는 이름, 전화번호를 각각 배열에 저장하는 자료구조를 사용했다. v4.0에서는 이름, 전화번호 두 가지 항목 외에 더 많은 항목을 추가할 수 있도록 구조체를 사용한 새로운 버전을 만들 것이다. 새로운 버전에서는 각 사람에 대해서 이름, 전화번호, 이메일 주소, 그룹을 지정할 수 있다. 이름을 제외한 다른 항목들은 비워둘 수도..
-
[C언어/자료구조] 전화번호부 v3.0 (인프런)CS/자료구조&알고리즘 2020. 1. 12. 16:51
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v3.0의 개선사항 https://skm1104.tistory.com/29 전화번호부 v1.0 https://skm1104.tistory.com/30 전화번호부 v2.0 v1.0과 v2.0에서는 배열의 크기가 고정되어 있었고 사용자가 잘못된 명령어를 입력했을 때 적절히 반응할 수가 없었다. 이러한 상황에도 대처할 수 있도록 개선된 v3.0을 만들어보자. 1) 저장된 사람의 수가 배열의 용량을 초과할 경우 동적 메모리 할당으로 배열의 크기를 키운다. names, numbers를 배열로 선언하지 않고 포인터로 선언해야한다. char ** names; char ** numbers; char * ..
-
C언어 전화번호부 v2.0 (인프런)CS/C언어 2020. 1. 11. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. v2.0 에서는 전화번호부를 파일로 저장하고 로드하고, 알파벳 순으로 정렬할 것이다. 자료구조는 전화번호부 v1.0과 동일하다. 전화번호부를 파일로 로드하고 저장하기 load 함수 void load() { char fileName[BUFFER_SIZE]; char buf1[BUFFER_SIZE]; char buf2[BUFFER_SIZE]; scanf("%s", fileName); FILE * fp = fopen(fileName, "r"); if (fp == NULL) { printf("Open failed.\n"); return; } while (fscanf(fp, "%s", buf1) != EOF)..
-
C언어 전화번호부 v1.0 (인프런)CS/C언어 2020. 1. 10. 21:01
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v1.0 이름, 전화번호의 리스트 저장 & 검색 기능 제공하는 전화번호부 프로그램 만들기 add john 01092419488 //새로운 사람 추가 delete john //삭제 find henry //이름으로 전화번호 검색 status //전화번호부에 저장된 모든 사람을 출력 exit //프로그램 종료 프로그램을 만들기 위해서는 가장 먼저 '자료구조'부터 생각해보아야 한다. 자료구조는 프로그램에서 다룰 데이터를 어디에 어떤 구조로 저장할 것인가를 말한다. 동일한 타입의 데이터가 여러 개 있을 때 사용할 수 있는 가장 기본적인 자료구조는 배열이다. v1.0에서는 데이터가 두 가지 종류(이름..
-
C언어 문자열 예제 (인프런)CS/C언어 2020. 1. 10. 20:51
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 첫번째 연습문제 사용자가 입력한 문자열을 공백포함 그대로 출력하고, 문자열의 길이(공백포함 길이)도 같이 출력한다. 풀이 1 #include #include #define BUFFER_SIZE 20 int main() { char buffer[40]; while(1) { printf("$ "); fgets(buffer, BUFFER_SIZE, stdin); buffer[strlen(buffer)-1] = '\0'; printf("%s:%d\n", buffer, strlen(buffer)); } "$ " : 프롬프트(prompt) 문자라고 한다. 사용자의 입력을 받겠다는 의미이다. scanf 함수는 공..
-
C언어 문자열 (인프런)CS/C언어 2020. 1. 8. 21:56
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 문자열 C언어에서 문자열은 char 타입의 배열에 저장된다. 문자열의 끝에는 null charactor ('\0') 를 저장해 문자열의 끝을 표시해주어야 한다. 컴퓨터에게 문자열의 끝이 어디인지 알려주지 않으면 에러가 발생한다. 이렇게 null charactor를 문자열 끝에 저장해 문자열의 끝을 표시하는 것은 C언어 자체의 문법은 아니지만, C언어의 많은 표준 라이브러리 함수들이 문자열을 다룰 때 문자열의 끝에 null charactor가 저장되어있다는 가정 하에서 동작한다. 그래서 C언어를 사용할 때는 모든 문자열의 끝에 null charactor를 추가해 문자열의 끝을 표시하는 것이 바람직하다...
-
C언어 포인터, 배열, 포인터 연산, 동적 메모리 할당 (인프런)CS/C언어 2020. 1. 8. 20:08
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 포인터 변수 컴퓨터의 메모리(RAM)는 데이터를 보관하는 장소이다. 메모리에는 바이트(8 bits) 단위로 주소가 지정되며, 모든 변수는 주소를 가진다. 예를 들어 정수형 변수 int sum 에 1004번지~1007번지까지 4바이트의 메모리가 할당되어있다면, sum의 주소는 1004번지이다. 포인터는 이러한 메모리 주소를 값으로 가지는 변수이다. 다음과 같이 포인터 변수를 선언할 수 있다. type-name * variable-name; variable-name : 선언된 포인터 변수의 이름 * : variable-name이 포인터 변수임을 표시하는 기호. type-name : 포인터 변수 varia..
-
주사위 게임 만들기 - 바로 실행해보면서 배우는 C언어CS/C언어 2020. 1. 6. 21:25
C언어 표준 라이브러리 파일 studio.h : printf, scanf 등 입출력 함수 stdlib.h : srand, rand 함수 time.h : time 함수 난수 만들기 srand 함수 : 호출할 때 전달받는 인자를 기반으로 해서 난수를 초기화 시킴 rand 함수 : srand로 생성된 값을 바탕으로 난수를 생성함 time 함수 : 인자값으로 NULL을 넘기면 1970년 1월 1일 0시(UTC 타임존)이후부터 인자값까지 현재까지 흐른 초 수를 리턴한다. 난수 생성 코드 #include #include #include int main() { srand(time(NULL)); //시간을 기준으로 난수 초기화 int random = rand(); //rand함수 호출해 난수 생성, 변수에 담기 pri..