728x90

continue 문을 만나면, 프로그램은 해당 루프 사이클의 나머지를 건너뛰고, 다음 루프사이클을 시작한다.

continue 문이 중첩된 구조 속에 들어있는 경우에는, 그 continue문을 포함하고 있는 내부 구조만 영향을 받는다.

 

break 문은, break가 들어 있는 그 루프로 부터 프로그램을 탈출시킨다. break문은 루프 바로 다음에 오는 문장을 곧장 실행을 옮긴다.

 

switch에서 break문은 switch다음에 오는 문장으로 건너 뛰게 만든다.

 

문자 입출력

입력 문자들을 즉시 에코 하는 것은 버퍼를 사용하지 않는 입력 또는 직접 입력의 한 사례이다. 반면에 입력 문자들을 뒤늦게 몰아서 에코하는 것은 버퍼(buffer)를 사용하는 입력의 한 사례이다.

 

버퍼를 사용하는 이유

1.문자들을 묶어서 전달하는 것이 하나씩 전달하는 것보다 시간을 적게 소모한다.

2. 잘못 타이핑 했을 때 키보드 기능을 사용하여 실수를 고칠 수 있다.

 

버퍼를 사용하지 않는 입력은 일부 대화식 프로그램에서 필요하다.

-> 게임에서 각 명령은 키를 누르는 즉시 실행 되어야 한다.

그러므로 버퍼를 사용하는 입력과 버퍼를 사용하지 않는 입력은 각각의 용도가 따로있다.

 

완전 버퍼링 입출력 : 가득 찼을때 버퍼가 비워진다. 일반적으로 파일입력에서 일어난다. 버퍼 크기는 시스템에 따라 다르지만, 512바이트와 4096바이트가 일반적인 값이다.

 

라인-버퍼링 입출력 : 개행 문자가 나타날 때마다 버퍼가 비워진다. 일반적으로 키보드 입력은 라인 버퍼링 입력이다.

 

 

IBM PC 호환기종의 PC는 C컴파일러들이 버퍼를 사용하지 않는 입력을 위해, conio.h 헤더파일이 지원하는 특별한 함수들의 계열을 제공한다. 여기에는 버퍼를 사용하지 않는 에코하는 입력을 위한 getche()와, 버퍼를 사용하지 않는 에코하지 않는 입력을 위한 getch()가 포함되어 있다.

 

에코하는 입력 : 사용자가 타이핑하는 문자가 화면에 보이는것

에코하지 않는 입력 : 키스트로크가 화면에 보이지 않는것

 

버퍼링에 대한 약간의 제어를 제공하는 함수 : setbuf(), setvbuf()

 

컴퓨터시스템들은 파일들을 저장하는 방식이 저마다 다르다. 어떤 시스템은 파일의 내용은 한곳에 저장하고, 그 파일에 대한 정보는 다른 곳에 저장한다.

어떤 시스템은 파일에 대한 정보를 그 파일 안에 저장한다.

 

텍스트를 다룰때, 어떤 시스템은 하나의 개행문자로 라인의 끝을 표시한다.

그런데 어떤 시스템은 캐리지 리턴 문자와 라인피드 문자의 조합으로 라인의 끝을 표기한다. 어떤 시스템은 파일의 크기를 정확한 바이트값으로 나타내지만, 어떤 시스템은 바이트들의 블록으로 나타낸다.

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 12  (0) 2019.05.08
C언어 공부 11  (0) 2019.05.08
C언어 공부 9  (0) 2019.05.08
프로그래밍연습 4  (0) 2019.05.06
프로그래밍 연습 3  (0) 2019.05.06
728x90

if와 else 사이에 하나 이상의 문장을 넣으려면, 단일블록을 만들기 위해 중괄호를 사용해야 한다.

ex)

if( x> 0)

{

   printf("x를 증가시킨다. : \n");

    x++

}

else

    printf("x <=0 \n");

 

getchar() : 단일 문자 입력함수

putchar() : 단일 문자 출력함수

 

getchar()와 putchar()는 scanf()와 printf()보다 빠르고 간결하다.

 

isalpha() : 전달인자가 알파벳 문자이면 0이아닌 값을 리턴한다.

 

tolower(ch);             //ch값 자체에 영향을 주지않는다.

ch = tolower(ch);       //ch를 소문자로 변환한다.

 

ctype.h 계열의 문자검사 함수들

isalnum() : 알파뉴메릭 문자(알파벳이나 숫자)

isalpha() : 알파벳

isblank() : 표준 블랭크 문자(스페이스, 수평탭, 개행)

isctrl() : ctrl+B와 같은, 제어문자

isdigit() : 숫자

isgraph() : 스페이스가 아닌 출력 가능한 문자

islower() : 영어 소문자

isprint() : 출력 가능한 문자

ispunct() : 구두점 문자(스페이스 또는 알파뉴메릭 문자가 아닌 출력가능)

isspace() : 화이트 스페이스 문자(스페이스, 개행, 폼피드, 캐리지리턴, 수직 탭, 기타 로케일 문자)

isupper() : 영어 대문자

isxdigit() : 16진수 숫자

 

ctype.h : 문자 매핑 함수들

tolower() : 전달인자가 대문자이면 소문자로 변환한 버전을 리턴한다. 전달인자가 소문자이면 원래의 전달인자를 그대로 리턴한다.

toupper() : 전달인자가 소문자이면 대문자로 변환한 버전을 리턴한다. 전달인자가 대문자이면 원래의 전달인자를 그대로 리턴한다.

 

정수곱 계산이 제곱근 계산보다 훨씬 빠르다

 

논리연산자                                       의미

&&                                         논리곱 AND

||                                             논리합 OR

!                                              논리부정 NOT

 

iso646.h 헤더파일을 사용하면

&&   대신   and

||      대신     or

!       대신      not

사용이 가능하다

 

범위를 검사하는데 && 연산자를 사용할 수 있다.

if(range >= 90 && range <= 100 )

if(90 <= range <= 100)           //이렇게 하지 마라

-> 에러를 찾아내지 못한다. if((90<= range) <= 100) ->이 된다. -> range가 90보다 크다면 -> if(1<=100)으로 항상 참이된다.

 

bool, true, false 를 쓰기 위해선 stdbool.h 헤더파일을 사용해야 한다.

 

문자열 입력에서 \n이나 ' '(스페이스)등을 필터링할때 ctype.h계열의 isspace()함수를 사용하는 것이 더 간단하다.

 

피연산자가 하나인 연산자를 단항연산자, 피연산자가 두개인 연산자를 이항 연산자라고 한다.

 

 

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 11  (0) 2019.05.08
C언어 공부 10  (0) 2019.05.08
프로그래밍연습 4  (0) 2019.05.06
프로그래밍 연습 3  (0) 2019.05.06
C언어 공부 8  (0) 2019.05.06
728x90

p218 - 1
p218-3
p219 -5
p219 - 7

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 10  (0) 2019.05.08
C언어 공부 9  (0) 2019.05.08
프로그래밍 연습 3  (0) 2019.05.06
C언어 공부 8  (0) 2019.05.06
c언어 공부 7  (0) 2019.05.06
728x90

p166-1
p166-4
p167 - 7

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 9  (0) 2019.05.08
프로그래밍연습 4  (0) 2019.05.06
C언어 공부 8  (0) 2019.05.06
c언어 공부 7  (0) 2019.05.06
C언어 공부 6  (0) 2019.05.05
728x90

while 문에서 한쌍의 중괄호로 while루프의 범위를 나타내고 있다.

 

C표준 수학 라이브러리가 거듭제곱을 연산하기 위한 pow()함수를 제공한다.

ex) pow(3.5,2.2) 는 3.5의 2.2제곱을 계산하여 리턴한다.

 

대입연산자 =

bow = 2002;

->bow라는 변수에 2002를 대입한다는 의미 이다.

 

i = i+1;

-> i라는 변수의 값에 1을 더하고 더한 값을 변수 i에 대입하라는 뜻이다.

 

데이터 객체 : 값을 저장하는데 사용할 수 있는 데이터 저장 영역

 

연산자 우선순위 ( 아래로 갈수록 낮아진다.)

         연산자                              결합방향

()                                             왼쪽에서 오른쪽으로

+- (단항연산자)                           오른쪽에서 왼쪽으로

*/                                             왼쪽에서 오른쪽으로

+- (이항연산자)                           왼쪽에서 오른쪽으로

=                                            오른쪽에서 왼쪽으로

 

typedef double real;

-> real을 double형의 또다른 이름으로 만든다. ex) real x = 5.2;

 

++shoe < 3.0 - 전위 연산자

shoe++ < 3.0 - 후위 연산자 비교한 후에 증가한다.

 

관계연산자

연산자             의미

<                 오른쪽이 왼쪽보다 작다

<=               오른쪽이 왼쪽보다 작거나 같다.

==               같다

>=              오른쪽이 왼쪽보다 크거나 같다.

>                오른쪽이 왼쪽보다 크다

!=               같지 않다.

 

*관계연산자는 대입연산자보다 우선순위가 높다.*

 

연산자(아래로 갈수록 우선순위가 낮아진다)            결합방향

( )                                                               왼쪽에서 오른쪽

- + ++ -- sizeof                                             오른쪽에서 왼쪽으로

* / %                                                           왼쪽에서 오른쪽으로

+ -                                                              왼쪽에서 오른쪽으로

<  >   <=   >=                                              왼쪽에서 오른쪽으로

==    !=                                                       왼쪽에서 오른쪽으로

=                                                                오른쪽에서 왼쪽으로

 

 

scanf()는 화이트 스페이스를 건너뛴다.

입력할 때 개행과 스페이스를 혼합하여 입력하기 가능

 

 

728x90

'Programming > C' 카테고리의 다른 글

프로그래밍연습 4  (0) 2019.05.06
프로그래밍 연습 3  (0) 2019.05.06
c언어 공부 7  (0) 2019.05.06
C언어 공부 6  (0) 2019.05.05
C언어 공부 5  (0) 2019.04.28
728x90

printf() 플래그

- : 항목이 왼쪽 정렬로 출력된다. 즉 필드의 왼쪽 부터 출력이 시작된다. ex)%-20s

+ : 부호있는 수를 출력할 때, 양수이면 +, 음수이면 - 를 붙인다.  ex)%+6.2f

스페이스 : 부호 있는 수를 출력 할 때, 양수이면 부호없이 스페이스를 하나 붙이고, 음수이면 -를 붙인다. + 플래그는 스페이스를 무시한다. ex) % 6.2f

# : 변환 지정에 대응하는 형식을 사용한다. %o의 경우에는 하나의 0을 앞에 붙인다. %x와 %X의 경우 0x 와 0X를 각각 붙인다.    ex) %#o    ,   %#8.0f   %+#10.3E

0 : 필드 너비에서 남는 공간을 스페이스 대신 0으로 채운다.   ex)%010d,   %08.3f

 

printf()함수도 리턴값을 가진다.

1. 정보를 출력하는 것과 어떤값을 변수에 대입한다.

2. 스페이스와 눈에 보이지 않는 개행문자까지 카운트하여 출력된 모든 문자들의 개수를 반환한다.

 

scanf()에 대한 C 변환 지정자

%c : 입력을 문자로 해석한다. 

%d : 입력을 10진 정수로 해석한다.

%e, %f, %g, %a : 입력을 부동소수점 수로 해석한다.

%E, %F, %G, %A : 입력을 부동소수점 수로 해석한다.

%i : 입력을 10진 정수로 해석한다.

%o : 입력을 8진 정수로 해석한다.

%s : 입력을 문자열로 해석한다. 다음 번 화이트 스페이스 앞까지의 입력

%u : 부호없는 10진 정수로 해석한다.

%p : 입력을 포인터(주소)로 해석한다.

%x, %X : 입력을 16진 정수로 해석한다.

 

scanf()에 대한 변환 변경자

* : 지정을 무시한다. scanf()가 그에 해당하는 입력을 건너뛴다. ex) "%*d"

자리수 : 최대 필드 너비. 입력이 최대 필드 너비에 도달하거나, 첫번쨰 화이트 스페이스를 만나면 중지된다. ex) " %10s"

hh : 하나의 정수를 signed char형 또는 unsigned char 형으로 읽는다. ex) " %hhd"  "%hhu"
ll : 하나의 정수를 long long 형 또는 unsigned long long 형으로 읽는다. ex) "%lld", "%llu"

h,l,L :

%hd, %hi 는 short int 형 저장

%ho, %hx, %hu : unsigned int

%ld, %li 는 그값이 long형으로 저장

%lo, %lx, %lu는 그 값이 unsigned long

%le, %lf, %lg는 double 형 저장

%Le, %Lf, %Lg 는 long double로 저장

위와같은 변경자들이 없으면 d,i,o,x는 int형을 나타내고, e,f,g는 float 형을 나타낸다.

j : 정수형 지정자가 뒤에 붙으면 intmax_t형 또는 uintmax_t형     ex)"%jd", %ju"

z : 정수형 지정자가 뒤에 붙으면 sizeof가 리턴하는 데이터형    ex)"%zd", %zo"

t : 두 포인터간의 차이     ex)"%td", "%tx"

728x90

'Programming > C' 카테고리의 다른 글

프로그래밍 연습 3  (0) 2019.05.06
C언어 공부 8  (0) 2019.05.06
C언어 공부 6  (0) 2019.05.05
C언어 공부 5  (0) 2019.04.28
프로그래밍 연습 2  (0) 2019.04.28
728x90

전처리기

#define

 

상수 이름은 대문자를 사용하는 것이 좋다.

또한 상수라는 것을 나타내기 위해 C_ 또는 K_를 붙이는 것이다.

 

limits.h에 정의 되어있는 일부 기호 상수들

CHAR_BIT : char형의 비트수

CHAR_MAX : char형 최대값

CHAR_MIN : char형 최소값

SCHAR_MAX : signed char형 최대값

SCHAR_MIN : signed char형 최소값

UCHAR_MAX : unsigned char형 최대값

SHRT_MAX : short형 최대값

SHRT_MIN : short형 최소값

USHRT_MAX : unsigned short형 최대값

INT_MAX : int형 최대값

INT_MIN : int형 최소값

UINT_MAX : unsigned int형 최대값

LONG_MAX, LONG_MIN, ULONG_MAX, LLONG_MAX, LLONG_MIN, ULLONG_MAX

 

float.h에 정의되어 있는 기호 상수들

FLT_MANT_DIG : float형의 가수부 비트수

FLT_DIG : float형의 소수부 최소 유효 자릿수

FLT_MIN_10_EXP : float형의 최대 유효숫자를 가진 최소 10진 음의 지수

FLT_MAX_10_EXP : float형의 최대 10진 양의지수

FLT_MAX : float형의 양의 최대값

FLT_EPSILON : 1.00과 최소한1.00 보다 큰 float형 값의 차

 

변환지정자

%a : 부동소수점수, 16진수

%A : 부동소수점 수, 16진수

%c : 단일문자

%d : 부호있는 10진 정수

%e : 부동소수점 수, e -표기

%E : 부동소수점 수 e - 표기

%f : 부동소수점 수, 10진 표기

%g : 값에 따라 %f나 %e 사용, 지수부가 -4보다 작거나, 정밀도 보다 크거나 같으면 %e사용

%G : 값에 따라 %f나 %e 사용, 지수부가 -4보다 작거나, 정밀도 보다 크거나 같으면 %e사용

%i : 부호있는 10진 정수 (%d와 같다)

%o : 부호없는 8진 정수

%p : 포인터

%s : 문자, 문자열

%u : 부호없는 10진 정수

%x : 부호없는 16진 정수, 16진 숫자 of 사용

%X : 부호없는 16진 정수, 16진 숫자 OF 사용

%% : 퍼센트 기호 출력

 

변경자

숫자 : 최소 필드 너비 ex)%4d

.숫자 : 정밀도 - 정수형의 경우 최소자릿수를 나타내며 최소 자릿수를 맞추기 위해 필요하다면 앞에 여분의 0을 붙인다.

-> %e, %E, %f - 소수점 아래에 출력될 자릿수

 %s 포맷 지정자의 경우 - 출력될 최대 문자수

ex) %5.2f  :  float형 값을 필드너비 5에 소수점아래 두자리까지 출력한다.

j : intmax_t or uintmax_t형 값을 나타냄  ex) %jd, %8jx

l : long int or unsigned long int 값을 나타냄 ex) %ld, %8lu

ll : long long int or unsigned long long int ex) %lld, %8llu

L : %Lf, %10.4Le - Long double 형 값을 나타냄

t : ptrdiff_t 형 값을 나타낸다. 두포인터 사이의 차에 대응하는 데이터형 ex) %td, %12ti

z : size_t형 값을 나타낸다. ex)%zd, %12zx

728x90

'Programming > C' 카테고리의 다른 글

C언어 공부 8  (0) 2019.05.06
c언어 공부 7  (0) 2019.05.06
C언어 공부 5  (0) 2019.04.28
프로그래밍 연습 2  (0) 2019.04.28
C언어 공부 4  (0) 2019.04.28
728x90

문자열 : 하나 또는 여러개의 문자들이 연속되어 있는 것을 말한다.
큰따옴표는 문자열이 아니다.

C는 널문자(\0)로 문자열의 끝을 표시한다.
C에서 문자열들은, 문자열의 끝을 표시하는 이 널 문자와 항상 함께 저장된다.
문자열의 크기는 저장할 문자들의 수보다 최소한 하나더 많아야한다.

배열(array) : 연속되어 있는 여러개의 메모리 셀
char name[40];
name 뒤에있는 각괄호([])에 의해 배열로 인식한다.
char는 원소의 데이터형을 나타낸다.

strlen()는 널문자를 제외한 문자열의 길이만 알려준다.
-> 널문자에서 카운트를 멈춘다.
sizeof 연산자는 널문자를 포함한 개수를 알려준다.

sizeof를 사용할 때 괄호 사용 여부는 데이터형의 크기를 원하느냐, 아니면 어떤 특정 양에 대한 크기를 원하느냐에 달려있다.
데이터형에는 괄호를 반드시 해야하지만 어떤 특정양에 괄호를 사용하는것은 옵션이다.

728x90

'Programming > C' 카테고리의 다른 글

c언어 공부 7  (0) 2019.05.06
C언어 공부 6  (0) 2019.05.05
프로그래밍 연습 2  (0) 2019.04.28
C언어 공부 4  (0) 2019.04.28
C언어 공부 3  (0) 2019.04.28

+ Recent posts