Old (2021.01 ~ 2021.12)/Programming

Unit 45 문자열 자르기 -strtok- strtok는 특정 문자를 기준으로 문자열을 잘라주는 역할을 한다. 마찬가지로 string.h 헤더에 선언돼 있다. 사용은 strtok(, );로 하면 된다. 자른 문자열을 반환하고 더 이상 자를 문자열이 없으면 NULL을 반환한다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char a[30] = "pwnable system hacking"; // 30 크기의 char 형 배열 선언 char *p = strtok(a, " "); // 공백을 기준으로 문자열 자르고 포인터 반환 while (p != NULL) // 문자열을 더 이상 자르지 못할 때까지 { printf("%s\n", p); /..
Unit 42 문자열을 복사하고 붙이기 -strcpy- strcpy는 문자열을 다른 배열이나 포인터로 복사해주는 함수다. strcmp 등과 마찬가지로 string.h 헤더에 선언돼 있다. 사용은 strcpy(, );로 하면 된다. strcpy 역시 취약점이 있는 함수이므로 #define _CRT_SECURE_NO_WARNINGS를 써줘야한다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char a[10] = "Hello"; char b[10]; // 10 크기의 char형 배열 a, b를 선언하고 문자열 Hello를 a에 저장 strcpy(b, a); // a의 문자열을 b에 복사 printf("%s %s", a, b); // a, b..
Unit 39. 문자열 사용하기 전부터 느껴왔던 건데 이상하게 c언어에는 string, str 같은 자료형이 없다. char로 문자열을 넣고 실행하면 실행 오류가 뜨는데, 이번 Unit에서는 c언어로 문자열을 저장하는 방법에 대해 다룬다. -문자열 사용- 문자열을 사용하는 방법은 char를 포인터 형식으로 사용하면 된다. char * = ""; #include int main() { char *a = "Hello dypar!"; // 포인터 a에 Hello dypar! 문자열 저장 printf("%s", a); // a의 문자열 저장 } 위처럼 char를 포인터형으로 선언하고 출력 시 서식 지정자를 %s로 지정해주면 문자열이 그대로 출력된다. 1바이트인 char형에 문자열을 저장할 수 있는 원리는 바로 ..
-keyword- 1, 2, 3차원 배열, 1, 2, 3차원 배열 포인터, 다차원 배열 포인터 메모리 동적 할당 Unit 36. 배열 사용하기 -배열(Array)- c언어의 배열은 파이썬의 list와 비슷한 기능을 한다. 여러 값들을 한 변수에 저장하는 것이다. 파이썬과 똑같이 0부터 시작하는 인덱스를 갖고 여러 개의 값을 한 변수에 사용이 가능하다. 단 파이썬과 달리 c언어에서의 배열은 같은 자료형의 값들만 저장할 수 있다. 이 배열은 파이썬과 비슷하게 반복문으로 값을 한꺼번에 저장하거나 빼낼 때 주로 사용한다. 앞서 코드업에서 바둑판, 격자판 등도 이 배열을 이용해서 풀었다. 사용은 [] = {};로 한다. 꼭 배열을 선언하자마자 크기만큼 값들을 넣어줄 필요 없이 선언만 하고 나중에 값들을 넣어줘도 ..
// 날짜 대신 Unit 명을 써주고 문제들은 맨 아래에 모아서 풀이를 적어봤습니다. -keyword- 포인터, 역참조, 메모리 할당, malloc, free, 스택, 힙, memset Unit 34. 포인터 사용하기 -포인터(pointer)- 포인터란 c언어에서 메모리 주소값을 저장하는 변수다. 포인터 변수라고도 부른다.(참고 : tcpschool) int a = 1; 위는 간단하게 1로 초기화되는 int형 변수 a를 선언한 코드다. 사실 변수를 선언했을 때 마법처럼 짠하고 변수가 생성되는게 아닌 컴퓨터의 메모리에 일정 공간을 확보해서 그 공간에 변수의 값을 저장하고 가져오는 것이다. 이 메모리에서 해당 변수의 주소(위치)를 메모리 주소라고한다. 즉 위 int a = 1;이라는 코드가 실행될 때 컴퓨터..
-Summary- 연산자 우선 순위, switch for while do while 반복문, break continue, 계단식 별 출력, goto, FizzBuzz 02-19 (Unit 24.1 ~ Unit 27.12) -2의 거듭제곱- 시프트 연산자를 사용한다면 2의 거듭 제곱을 빠르게 구할 수 있다.(아마 컴퓨터 입장에서 연산하기 쉬운 2진수로 연산해서 그런 것 같다.) **으로 제곱 연산을 할 수 있는 파이썬과 달리, math.h를 include하지 않는 이상 c언어는 거듭제곱 연산자를 제공하지 않으므로, 이 시프트 연산자를 이용해서 거듭제곱을 하면 된다. 위 코드처럼 1을 왼쪽으로 지수만큼 시프트 연산을 수행하면 해당 지수만큼 2가 거듭제곱되서 출력된 것을 볼 수 있다. 2^2 = 1 2 같은 ..
-Summary- 사칙 연산, 증감 연산자, 자료형 확장-축소, if else if else 조건문, 비교 연산자, bool 자료형, 비트 단위 연산자 02-17 (Unit 12.1 ~ Unit 19.5) -+, -- +, -는 파이썬과 동일하게 더하고 빼주는 기능의 연산자다. + - 이런식으로 써줄 수 있고 이런식으로 변수끼리의 연산도 가능하다. 또한 = - 또는 = + 이라면 파이썬에서 배웠던 것 처럼 +=, -=으로 줄여쓸 수 있다. += -= 이런식으로 +, -를 이용해 값과 변수끼리 플러스 마이너스 연산이 가능하다. 실수도 역시 동일한 방법으로 가능하다. 값이나 변수를 더할 때는 = + 로 써주면 된다. b : num1과 더할 값이 없다. + num1이 되야한다. X 답 : b num1의 값을 ..
-Summary- c언어 배경지식, printf 함수, c언어 기본 문법, 변수, 정수-실수-문자 자료형, 상수, scanf 함수 02-15 (Unit 1.1 ~ Unit 6.1) //Unit 1.1 ~ Unit 3.2까지는 파이썬 코딩도장과 겹치는 부분도 있고, 환경 구성 부분이라 중요한 부분 빼고는 생략했습니다. -c언어의 역사- c언어는 1972년 켐 톰슨과 데니스 리치가 유닉스 운영체제를 만들기 위해 고안한 프로그래밍 언어다. 메모리와 하드웨어를 직접 제어할 수 있다는 특징이 있다. 이 때문에 Windows, Linux, Android, iOS 운영체제의 커널은 c언어로 만들어져 있다. 운영체제 말고도 Oracle, MySQL 등의 데이터 베이스도 c와 c++로 만들어져 있고, 에어컨, 세탁기 등..
-Summary- try except else finally 예외처리, iterater-iteraterble, 정규 표현식 02-12 (Unit 38.1 ~ Unit 38.7) -exception(예외) 처리- 예외 처리란 예외가 발생했을 때, 실행을 중지하지 않고 계속 실행하게 해주는 것이다. -exception(예외) 예외란 코드를 실행하는 도중에 발생한 에러를 뜻한다. 첫 번째 2/0은 ZeroDivisionError(0으로 나눠져서 생기는 에러) exception을 일으키고, 두 번째는 ValueError exception을 일으킨다. ZeroDivisionError, ValueError 등 실행 중에 발생하는 에러는 모두 예외에 해당된다. -try, except try, except는 예외 처리..
-Summary- 의미론적 태그, 구글 검색엔진 최적화 가이드 02-10 (의미론적 태그 ~ 검색엔진 최적화 3) 의미론적 태그는 기능은 없지만 웹을 만들 때 사용되는 구조에 의미를 부여해준다. 의미론적 태그는 생활코딩 사이트에서 캡처한 위 사진처럼 여러가지가 있다. 이중에서 header, footer, nav는 학교에서 정보처리 산업기사 수업을 할 때 구역을 구분해주는 역할로 많이 접했었다. header는 머리라는 뜻에 걸맞게 가장 위쪽에 위치하는 것들을 의미하며, 해당 사이트 전체에 대한 정보가 들어있는 부분이다. 네이버 웹사이트로 예를 들자면 빨갛게 표시된 이 위쪽 부분이 header 부분인 것 같다. 이 위쪽에는 naver 광고가 있는데, 이부분도 header에 포함될 것 같지만 광고기 때문에 a..
dyp4r
'Old (2021.01 ~ 2021.12)/Programming' 카테고리의 글 목록 (2 Page)