본문 바로가기
반응형

프로그래밍/C11

[C언어] 문자열 자르기( strtok() ) / 문자열과 숫자 서로 변환하기 ( atoi(), strtol(), atof(), strtof() ) / 회문 판별, N-gram 만들기 문자열 자르기( strtok() ) / 문자열과 숫자 서로 변환하기 ( atoi(), strtol(), atof(), strtof() ) / 회문 판별, N-gram 만들기에 대해서 정리한다. 문자열 자르기 - strtok(대상문자열, 기준문자); ( 기준문자는 "(큰 따옴표)로 묶어준다 ) - 헤더 파일에 정의되어 있다. - strtok() 함수는 자른 문자열을 NULL로 채운다. ( 더이상 자를 문자열이 없으면 NULL을 반환한다 ) * 자른 문자열을 NULL로 채우기 때문에 반복해서 문자열을 자르는 작업을 하려면 반복문을 이용해서 strtok() 함수를 사용할때 대상문자열을 NULL로 준다. * strtok() 함수를 이용해서 문자열을 자르면 원본 문자열을 변환하기 때문에 사용에 주의한다. 문자열 .. 2017. 10. 19.
[C언어] 문자열 길이(strlen()) / 비교하기(strcmp()) / 복사하기(strcpy()) / 붙이기(strcat()) / 만들기(sprintf()) / 검색(strchr(), strrchr(), strstr()) 문자열 길이 구하기(strlen()) / 비교하기(strcmp()) / 복사하기(strcpy()) / 붙이기(strcat()) / 만들기(sprintf()) / 검색(strchr(), strrchr(), strstr())에 대해서 정리한다. 문자열 길이 구하기 - 문자열 길이를 구할때는 strlen(문자열포인터) 혹은 strlen(배열) 형식을 사용한다. ( 헤더 파일에 정의되어 있다 ) * strlen() 함수를 이용해서 문자열의 길이를 구할때는 NULL은 길이에 포함하지 않는다. ( strlen()을 이용한 문자열 길이는 NULL 바로 앞까지의 길이를 구하는 것이다 ) 문자열 비교하기 - strcmp(문자열1, 문자열2) 형식을 사용해서 두 문자열이 같은지를 비교한다. ( 헤더 파일에 정의되어 있다 .. 2017. 10. 17.
[C 언어] 포인터와 배열 응용 / 문자와 문자열 포인터( 문자열 사용하기 ) / 배열 형태로 문자열 선언 / 입력 값을 문자열에 저장 포인터와 배열 응용 / 문자와 문자열 포인터( 문자열 사용하기 ) / 배열 형태로 문자열 선언 / 입력 값을 문자열에 저장에 대해서 정리한다. 포인터와 배열 응용 - 프로그램 실행 중에 원하는 크기만큼 배열을 생성하는 기능 ( 가변 길이 배열(Variable-Length Array, VLA) ) - visual studio 2015에서는 해당 방법을 지원하지 않기 때문에 포인터에 메모리를 할당해서 메모리를 배열처럼 사용하는 방법을 이용한다. - 자료형 *포인터 = malloc(sizeof(자료형) * 크기) 형식을 사용한다. - '*포인터'처럼 포인터를 역참조한 것과 '포인터[0]'처럼 인덱스 0에 접근하는것은 같은 값을 가져온다. 또한 '포인터[1]'과 *(포인터 + 1)도 서로 같은 값을 가져온다. .. 2017. 10. 16.
[C언어] 배열 / 2차원 배열 배열 / 2차원 배열에 대해서 정리한다. 배열 자료형 배열이름[크기] = {값, 값, 값}; - 같은 자료형의 변수를 일렬로 늘어놓은 형태 - 반복문을 이용해서 연속적이고 반복되는 값을 쉽게 처리할 수 있다. - 배열내의 각 요소에 접근할때는 '배열명[index]' 형식을 이용해서 접근이 가능하다. ( 배열 index의 시작은 0부터 시작한다 ) - 배열안에 있는 요소의 갯수는 배열의 선언된 크기보다 작을수는 있지만 클수는 없다. ( 만약 배열안에 있는 요소의 갯수가 배열에 선언된 크기보다 작다면 나머지 요소에는 자동적으로 0으로 값이 채워진다 ) - 배열의 모든 요소를 0으로 초기할때는 '자료형 배열이름 = { 0, }' 형식으로 사용해주면 된다. ( 위 형식을 사용하면 0을 배열의 크기만큼 각 요소에.. 2017. 10. 14.
[C언어] 중첩 반복문 / goto 제어문 / FizzBuzz 문제 / 포인터 / 메모리 사용 중첩 반복문 / goto 제어문 / FizzBuzz 문제 / 포인터 / 메모리 사용하기에 대해서 정리한다. 중첩 반복문 - 중첩 반복문을 이용하면 2차원 형태의 값을 제어할 수 있다. goto 제어문 goto 레이블; 레이블: - 프로그램의 흐름을 원하는대로 바꿀때 사용한다. ( 중간의 코드는 무시하고 원하는곳으로 건너뛰게 된다 ) - 위아래 방향 상관없이 사용할 수 있다. - 에러처리를 할때 유용하게 사용할 수 있다. - goto를 너무 남발하면 유지보수와 가독성이 떨어지는 스파게티 코드가 될 수 있다. - 실행되는 레이블이 연속적으로 위치해있다면 switch문을 사용할때 case안에 break가 없으면 아래 case에 있는 실행코드들도 실행하는 것처럼 해당 레이블 실행이후에 종료 시키는 코드가 없다면.. 2017. 10. 14.
[c언어] 반복문( for, while, do.. while ) / 반복문 제어( break, continue ) 반복문( for, while, do.. while ) / 반복문 제어( break, continue )에 대해서 정리한다. 반복문( for ) for (초기식; 조건식; 변화식) { 반복할 실행코드 } - 반복되는 기능을 처리할때 사용 - 루프 선언문(loop statement)를 통해서 반복할 횟수와 조건을 지정하고 그 횟수만큼 루프 본체(loop body)의 코드가 실행된다. ( 조건식이 참이면 반복문을 계속 진행하고 거짓이면 반복문을 끝낸다 ) - 반복에 사용할 변수는 초기식에 선언해도 되고 밖에서 선언해도 된다. - 반복 횟수가 정해져있을때 유용하게 사용된다. - for에서도 마찬가지로 실행코드가 한줄일때는 중괄호를 생략할 수 있다. - for 반복문에 사용할 변수와 초기값이 설정되어있으면 초기식.. 2017. 10. 13.
[c언어] 조건문( if ) / 비교 연산자, 삼항 연산자 / 논리 연산자 / bool 자료형 / 비트 연산자 / 연산자 우선순위 / switch문 조건문( if ) / 비교 연산자, 삼항 연산자 / 논리 연산자 / bool 자료형 / 비트 연산자 / 연산자 우선순위 / switch문에 대해서 정리한다. 조건문 ( if ) if ( 조건식 ) { 실행코드 } else if ( 조건식 ) { 실행코드 } else { 실행코드 } - 조건식을 만족했을때 해당 코드를 실행한다. - 조건식 뒤에 세미콜론이 붙는다면 중괄호 안의 코드는 실행되지 않고 if문이 끝나게 된다. ( 해당 실행코드가 정상적으로 실행되는 이유는 c언어에서는 코드를 중괄호로 묶을수 있기 때문이다 ) - 실행코드가 한줄이면 중괄호의 생략이 가능하다. - 조건식에서 비교할 변수와 값, 변수와 변수는 자료형을 맞춰주어야 한다. ( 실수의 경우에는 반올림 오차가 발생할 수 있으므로 반올림 오차.. 2017. 10. 12.
[C언어] 문자 자료형 / 상수 / 입력( scanf ) / 증감 연산자 / 자료형 확장, 축소 문자 자료형 / 상수 / 입력( scanf ) / 증감 연산자 / 자료형 확장, 축소에 대해서 정리한다. 문자 자료형 - char를 이용해서 하나의 문자를 저장가능 ( 부호없는 char는 보통 바이트 단위 데이터를 저장한다 ) - C언어에서는 작은따옴표를 이용해서 문자 하나를 묶는다. ( 작은따옴표를 이용해서 문자열을 묶을수는 없다 ) - char에 문자를 저장할 때는 문자 자체를 저장하지 않고 문자에 해당하는 정수값(ASCII)으로 저장된다. ( 서식지정자 %d를 이용해서 char 자료형 변수에 저장된 값을 불러오면 ASCII 코드의 10진수 값이 나온다 ) - char 문자에 있는 값을 서식지정자 %x를 이용해 16진수로 불러올때는 10진수와 헷갈리지 않도록 서식지정자 앞에 0x를 붙여준다. ( 8진.. 2017. 10. 12.