본문 바로가기

c기초

(53)
052. 문자 출력하기 (putch) 책에서 계속 conio.h 를 쓰네요. 리눅스로는 실행을 못하니까 설명먼저 할게요. 코드 자체는 47번과 비슷한데 그냥 putch를 쓰기위해서 conio.h 를 써놓은 겁니다. getch로는 하나의 문자를 입력받는다고 했었죠? putch는 하나의 문자를 출력합니다. 리눅스하시는 분들은 따라하셔도 되고 아니면 그냥 읽어만 보세요. This is a function 47번 예제와 똑같은 실행결과이다. 17줄 - putch(*string); putch를 쓰지 않으려고 하면 47번 예제와 똑같이 printf("%c", *string); 을 쓰면 된다. 어짜피 주소값에 저장되어 있는 문자를 하나씩 출력하는 역할을 하기 때문에 똑같은 일을 한다. 21줄 ~ 22줄 \r 이랑 \n 이뭔가? 이스케이프 시퀀스라고 해서..
051. 문자 입력받기 (getch) gcc, 리눅스 쓰는 분들 읽어주세요. getch 라고 쓰는게 있는데 gcc, 리눅스쓰시는 분들은 못써요. conio.h 가 없기 때문입니다. 49번글 제일 밑에 있는 부분을 읽어보면 getch.h 하는게 있습니다. 그걸 따라해주세요. 주석처리한거 잘 읽어주세요. 리눅스 쓰는 분들 읽어주세요. #define ENTER 13 이라고 하는게 있습니다. 키값을 받아서 ENTER를 누르면 종료하게끔 하는건데 리눅스는 윈도우랑 키값이 달라서 10이라고 해야합니다. 주석처리한거 잘 읽어주세요. 문자 : 4, 아스키 코드 : 52 문자 : 5, 아스키 코드 : 53 문자 : 6, 아스키 코드 : 54 문자 : 1, 아스키 코드 : 49 문자 : , 아스키 코드 : 13 ( 리눅스는 10 ) 4줄 - #define E..
050. 매크로 이해하기 최대값은 7입니다. 최소값은 5입니다. 매크로는 함수 대신 사용하는 것으로써 짧은 문장에 주로 사용되며 복잡한 문장을 단순화 하기 위해서 사용합니다. 라고 써있습니다. 크게 어렵진 않습니다. 3줄 ~ 4줄 매크로를 정의하기 위해서 #define을 써줍니다. 13줄 ~ 14줄 MAX( i, j ), MIN( i, j ) 를 사용했습니다. 여기서 i, j 가 각각 a, b에 들어간다고 보시면 됩니다. 그래서 13줄을 보면 printf("최대값은 %d입니다.\n", a < b ? a : b); 랑 같다과 보시면 됩니다. -----------------------------------------------------------------------------------------------------------..
049. #include 문 이해하기 gcc컴파일러를 사용하시는 분들은 따라쓰지 마세요. 글의 끝부분을 읽어주세요. 이 책은 window기준으로 쓰여있는 책이기 때문에 gcc 컴파일러를 사용하는 분들은 conio.h 이게 오류가 뜰거에요. 왜 그런가 하면 conio.h 이건 C표준에 있는게 아니라 그냥 사용자의 편의를 위해서 사용되는 것이기 때문입니다. 윈도우에서 visual studio 같은걸 쓰는 사람들은 아마도 아무 에러없이 실행 될 거에요. 아무키나 누르세요... ( 숫자 1을 누르면 ) 1 키가 눌려졌습니다. 우리가 지금까지 #include 이걸 쓴 이유는 stdio.h안에 선언된 함수를 사용하기 위해서 사용했다. c를 계속 하다보면 stdio.h 말고도 다른걸 많이 사용한다. #include 이런식으로 하는 방법이 있고 #incl..
048. 변수의 범위 이해하기 x = 5 x = 10 x = 20 이번에는 전역변수랑 지역변수가 언제 쓰이는지에 관한 내용이다. 우리는 이때까지 main 함수를 적어놓고 그 안에 int a; 이런식으로 적어왔다. 이렇게 선언한 a라는 변수는 지역 변수이다. 근데 변수는 함수 밖에다가 선언할 수 있다. 그렇게 선언한 변수는 전역 변수라고 한다. 6줄 - int x = 20; 이건 함수밖에 혼자 선언된 변수다. 이게 전역 변수이다. 전역변수를 해놓왔으면 어디서든지 쓸 수 있다. 10줄 - int x = 5; 이건 main함수 안에서 선언되었기 때문에 지역 변수이다. main함수 안에서 선언했기 때문에 main함수밖에선 사용할 수 없다. 11줄 - printf("x = %d\n", x); x를 출력하라고 한다. 그런데 x라는 이름의 변수가..
047. 함수와 인수 이해하기 This is a function 3줄 - int print(char *string); print() 함수를 선언합니다. 반환값은 int형, 인수는 문자열의 포인터를 받습니다. 7줄 - print("This is a function"); print 함수를 호출합니다. 14줄 - while (*string != (char)NULL) string이 가리키는 번지에 NULL값이 아니면 참, NULL이면 거짓으로 판단하고 참이면 while문을 실행합니다. 문자열의 마지막에는 보이지는 않지만 NULL값이 들어갑니다. 그래서 T h i s i s a f u n c t i o n 이 다 출력하고 나서 그 다음번 실행할땐 NULL을 만나 while문을 빠져나갑니다. 20줄 - return len; 문자열의 길이를 반환..
046. 데이터형 정의하기 조건식은 true 입니다. 우리가 정수형을 쓸 땐 int 실수형을 쓸 땐 double 이런식으로 쓴다. typedef를 쓰면 C언어에 없는 데이터형을 만들 수 있다. bool은 불 대수라고 부르고 0과 1값을 갖는데 C언어에서는 bool형이 없다. 그래서 typedef문으로 직접 만들어서 사용하는 예제이다. 6줄 - typedef int bool; typedef 를 쓰고 int bool; 이라고 해준다. 그럼 이제 bool형을 사용할 수 있다. 10줄 - bool a; 그냥 int a; 하듯이 bool a; 하면 된다.
045. 열거형 이해하기 0 1 2 3 4 5 6 열거형은 그냥 수를 나열한다 라고 보면 쉬울 것 같다. 3줄 ~ 12줄 enum { ... } 이런식으로 쓴다. sun = 0 을 쓰고 나머지를 쭈욱 썼다. 출력결과를 보니 0 ~ 6이 나왔다. sun = 0을 해서 처음에 0이 나오고 그다음거는 1, 2, 3... 이런식으로 나왔다. sun = 5라고 하면 어떤 출력이 나올까? 5, 6, 7, 8 이런식으로 나올 것이다. 그리고 중간에 값을 내가 설정할 수 있다. 이런식으로 바꾸면 어떤 출력이 나올까?? 0, 1, 7, 8, 9, 15, 16 이라고 나온다.