CS/C언어
-
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..
-
구조체 - 바로 실행해보면서 배우는 C언어CS/C언어 2020. 1. 5. 23:06
구조체를 사용하면 자료형이 다른 여러 개의 변수를 편리하게 사용하고 관리할 수 있다. 사용자가 직접 자료형(사용자 정의 자료형)을 만들어 하나 이상의 변수를 묶어서 관리한다. ex) 회원정보 저장, 관리 - 아이디(문자열), 나이(숫자), 전화번호(숫자) 등 구조체 정의하고 사용하기 구조체는 보통 main 함수 전에 선언한다. (main 함수 안에 선언하면 main 함수 안에서만 사용할 수 있다.) 구조체 안의 변수들은 '구조체 멤버'라고 한다. 구조체 선언만으로는 바로 사용할 수 없고(자료형만 선언한 것이기 때문), main 함수 안에서 선언한 구조체 자료형을 가진 변수를 선언한 후 사용할 수 있다. 구조체 선언하기 struct 구조체이름 { 구조체 멤버들 }; 형태로 선언하고, main 함수에서 st..
-
포인터 - 바로 실행해보면서 배우는 C언어CS/C언어 2020. 1. 3. 21:22
포인터 포인터 : 변수의 주소값을 저장하는 변수. 포인터 변수라고도 부름. 포인터 변수의 선언과 초기화 포인터 변수를 선언할 때는 *(참조 연산자)를 붙여서 선언. int형 변수의 주소를 담고 싶다면 int *p = null; 과 같이 선언하면 됨. 포인터 변수의 크기는 자료형이 달라도 모두 동일하다. (동일한 운영체제 시스템일 경우 주소값의 크기가 동일하기 때문) ※ 포인터 변수 선언 시 자료형의 역할 : 가리킬 주소에 담긴 변수가 어떤 자료형을 갖는지 알려줌. (포인터 연산을 할 때, 해당 주소로 찾아가서 자료형에 따라 다른 크기(int-4바이트, double-8바이트 등)를 읽어와야 하기 때문) 포인터 변수의 초기화 : null(0)로 초기화한다. 초기화하지 않고 선언만 한 다음 나중에 주소값을 넣..