프로그래밍
-
정수의 입력 함수 (scanf), 버퍼의 추상화C언어 2020. 2. 19. 18:27
앞의 포스트에서 다룬 내용은 문자열과 문자의 입력 출력 함수와 함수가 내부적으로 버퍼를 통해 어떤 식으로 동작하는지 알아보았다. 이번 포스트에서는 정부의 입력 함수와, 정수의 오버플로우, 앞에서 계속 설명한 버퍼에 대해서 다룰 것이다. 정수를 입력받기 위해 필요한 함수는 scanf함수이다. printf 함수와 마찬가지로 형식문자열을 받는 형태이다. scanf : 형식 문자열에 맞추어 표준입출력장치(stdin) 로 부터 정보를 읽어들이는 함수이다. 인자값으로는 사용자가 입력한 값을 저장할 메모리의 주소를 받게 된다. + stdin : 표준입출력장치 즉 콘솔을 추상화 시킨 개념 위의 자료는 콘솔에 대한 입력 버퍼 구조체를 확인하면서 버퍼에 대해 자세히 살펴보기 위한 코드이다. stdin는 표준입출력 장치를 ..
-
문자(배)열 과 gets, puts (문자열 I/O 함수) 함수C언어 2020. 2. 18. 08:02
이번 포스트에서는 문자열과 콘솔을 통해 이루어지는 문자열을 입, 출력해주는 함수에 대해서 알아볼 것이다. 이전 포스트에서 말했다시피 문자열을 하나의 인스턴스로 착각하는 경우가 있는데 문자열은 여러 인스턴스들의 연접한 집합으로 문자들의 배열이라고 본다. 따라서 배열을 식별함에 있어서 주소를 통해서 식별을 하게 되는데 이때 주소는 해당 배열의 가장 첫 번째 인스턴스의 주소에 이름이라는 식별자를 부여해 배열을 식별한다. " 나부터 배열이 시작돼 라고 알려주는 것 " 즉 배열은 이름이라는 식별자를 통해 식별하게 되고 이름은 해당 배열의 가장 첫 번째 인스턴스의 주소를 가리킨다 따라서 결국은 주소를 통해 배열을 식별한다 라고 볼 수 있다. 또한 주소의 개념이 나오다 보니 주소에 대한 정보를 담는 변수인 포인터의 ..
-
getchar 함수와 동작 원리 (버퍼링)C언어 2020. 2. 16. 08:38
전 포스트는 표준 입출력 함수 중 하나인 getchar 함수와 putchar 그리고 해당 함수들이 어떤 방식으로 동작하는지 알기 위한 개념인 버퍼, 버퍼링, 플러싱에 대해 알아보았다. 이제부터는 실질적으로 어떻게 동작하는지 살펴보겠다. C에서 표준 입출력 함수들은 대부분 버퍼를 이용한 입출력을 수행한다. 즉 콘솔을 통해 자료를 입력받으면 버퍼를 통해 자료를 차례대로 쌓아 두며 출력 시에는 버퍼에 쌓인 자료를 꺼내서 콘솔에 출력한다. 이때 중요한 점이 버퍼는 콘솔에 연결 되어 있다는 점이다. 즉 입력함수를 호출하면 해당 함수는 콘솔에 연결된 I/O 버퍼를 확인해서 해당 버퍼가 비어있는지 확인하고 비어있을 때 사용자로 부터 입력을 받는다. 버퍼가 비어 있을 시 1. char ch1 = getchar() 함수..
-
표준 O/I (getchar, putchar)C언어 2020. 2. 16. 08:00
현재 다룰내용은 앞서 설명한 C에서 제공하는 콘솔을 통해 입력과, 출력을 도와주는 표준 입출력 합수에 대해서 알아볼 것이다. C에서 문자를 입력받는 가장 쉬운 방법은 getchar 함수를 통해 문자를 입력받는 것이다. 위와 같이 코드를 작성한 뒤 키보드로 문자 하나를 입력한 뒤 엔터를 치는 순간 입력한 문자가 모니터로 출력되는 것을 볼 수 있다. 이때 이루어진 일은 콘솔 창에서 사용자의 입력을 기다리면서 사용자가 문자와 엔터를 입력하는 순간 getchar 함수는 입력받은 문자를 반환하여 char 형 변수 ch1이라는 곳에 담아서 저장하였다. 그 뒤 putchar함수를 통해 getchar 함수가 반환한 값이 있는 ch1 변수의 값을 putchar 함수의 매개변수로 넣어서 입력한 정보가 출력되는 것을 볼 수..
-
C언어 표준 O/IC언어 2020. 2. 16. 06:47
이전까지 배운 배용을 간단하게 설명한다면 컴퓨터의 메모리에 저장되는 자료는 0과 1의 2진수의 형태를 가지고 있으며 이런 숫자를 변수와, 상수라는 형태의 개념으로 나눌 수 있으며 변수는 아직 정해지지 않은 수, 상수는 정해진 수로 해석할 수 있다. 또한 이렇게 메모리에 할당된 자료는 해석하는 방식에 따라서 다른 의미를 가질 수가 있다. 이때 해석하는 방식을 자료형이라고 부른다. 이제부터 다룰 내용은 위에서 배운 개념들을 활용하여 입력과 출력과정을 통해 사용자가 자료를 다루는 방법에 대해서 살펴볼 것이다. 간단하게 노래를 듣는 과정을 생각해 보자 사용자는 핸드폰에 mp3파일 형태의 자료를 집어넣을 것이다. 핸드폰은 들어온 파일에 대한 연산을 통해 사용자에게 노래를 틀어줄 것이다. 이때 파일 형태의 자료를 ..
-
문자와 문자열C언어 2020. 2. 16. 05:54
위의 그림은 문자와 문자열을 선언한 것이다. ch1, ch2는 변수를 char형으로 선언하며 "A"와 "B" 라는 문자를 선언한 것이다. ch4는 문자열을 선언한 것이다. 문자열은 문자 배열로 볼 수 있으며 따라서 ch4 = {"A","B"} 와 같다 따라서 ch4라는 배열은 A와 B라는 각각의 인스턴스를 가지고 있는 문자의 연속 집합이라고 볼 수 있다. 위의 자료와 같이 ch1과 ch2는 각각 문자 형태의 자료를 담고있으며 각 메모리에 붙은 이름 역시 독립적이다. 하지만 ch4와 같이 문자배열을 선언한 경우 008CF790이라는 주소의 메모리에 인접한 메모리에 A와B의 문자 형태의 자료를 차례로 담고 있는 것을 확인 할 수 있다. 이것은 흔히 사용하는 문자열이라는 개념은 문자배열을 의미하며 해당 문자배..
-
실수 자료형의 표현C언어 2020. 2. 16. 04:24
C언어에서 실수를 표현하는 자료형 중 가장 많이 사용되는 자료형은 2가지가 존재한다. 1. float (4byte) -> 단정도 2. double (8byte) -> 배정도 그렇다면 어떤 방식으로 컴퓨터는 실수를 인식하는가 ? 아래 자료를 보자 위와 같이 실수를 표현 함에 있어 정수1과 정수 2 사이에는 무한한 실수들이 존재한다. 따라서 컴퓨터의 한정된 메모리의 크기상 일정 부분에서 값을 끊어서 표현해주어야 한다. 이때 끊어서 표현함에 따라 버려지는 뒤의 값들 때문에 필연적으로 실수 표현 방식에서는 일정 크기의 오차가 존재한다. 실수 자료형에 대한 표현 원리는 차후 printf 입출력 부분에서 자세히 다룰 것이므로 지금은 간단하게 컴퓨터가 실수를 표현할 때에는 오차가 생긴다는 사실만 기억한다.
-
자료형의 종류C언어 2020. 2. 6. 20:02
자료형은 다음과 같이 정수형, 실수형으로 나뉘어 지며 정수형에서는 다시 부호가 있는 형태 (Signed)와 부호가 없는 형태(unsigned)로 나뉘어 진다. 아래의 표를 참고하면 어떠한 자료 형태가 있는지 알 수 있다. 위와 같은 자료형 들이 존재하며 자주 사용하게 될 자료형은 char, int, double 형식을 많이 사용하게 될 것이다. 각 자료형이 나타낼 수 있는 경우의 수는 각 자료형의 크기와 상관이 있다. 만약 자료형의 크기가 1byte와 같다면 8bit의 크기만큼 표현할 수 있으며 따라서 2의 8제곱 만큼의 수를 표현할 수 있다. 위의 자료처럼 1bit만큼의 크기는 해당 자료의 부호를 나타내 준다 만약 음수를 표현하고 싶다면 부호 비트자리에 1을 양수라면 0을 할당하여 해당 자료가 음수 o..