본문 바로가기

프로그래밍/C언어.33

[C언어] % 연산자. mod 연산자. 예제소스&그림 [C언어] % 연산자. mod 연산자. 예제소스&그림 [C언어] % 연산자. mod 연산자. 예제소스&그림 [C언어] % 연산자. mod 연산자. 예제소스&그림 다룰 내용 나누기의 기본적인 방식 반드시 알아야 하는 나누기의 주의사항. 정상적인 나누기를 하기 위한 2가지 방법. % 연산자를 알아보자. 주로 사용되는 %의 2가지 방법. 나머지 연산. 이라고 하며 % 또는 mod (모드) 연산자 라고도 한다. %연산자를 배우기 전에 일단 나누어서 결과를 취하는 경우는 3가지가 있다. 1. 나누어서 몫과 나머지를 구하는 방법. 2. 나누어서 몫만 구하는 방법. 3 .나누어서 나머지만 구하는 방법. 꼭 알아야 하는 나누기의 주의사항을 알아보자. 처음 또는, 오랜만에 접하는 사람들이 범하는 실수인데 바로 정수를 정.. 2012. 2. 26.
#define 사용법, #define에서 # 사용법. 예제소스&그림 define란? #define 사용법. 간단 예제. 매크로와 전처리기 지시자. #define에서 #의미, # 사용법. 다룰 내용 매크로 상수와 매크로 함수. #define 이 필요한 간단한 이유. #define 사용시 반드시 주의해야 할 점. #define 에서의 #의 의미와 사용법. #define PI 3.14 라고 가정하면 #define를 전처리기 지시자 라고 하며, PI를 매크로 상수 라고 한다. 아래 소스를 살펴보자. #include #define PI 3.14 int main() { double tmp; printf("PI = %.2lf\n", PI); tmp = PI + 1; printf("tmp = %.2lf\n", tmp); //PI = 3; or PI += 1 or PI++ Error r.. 2012. 2. 26.
getchar(), getch(), getche()의 차이점. 예제소스 & 그림 알듯 모를듯 한 미묘한 3가지 함수의 차이점에 대해서 파헤쳐 보자 -_-!! getchar(), getch(), getche()의 차이점 !! 비슷해 보이는 3가지 종류의 함수가 있다. 차이가 뭘까? 어떻게 보면 사실 결과는 같을 수도 있다. 가장 기본적으로 getchar()은 #include getch(), getche()는 #include 해야 사용이 가능하다. 비교 getchar() getche() getch() 버퍼 사용 O X X 화면 표시 O O X 종료 인식 \n \r \r 첫번째 버퍼 사용 여부의 차이 버퍼를 사용하는 경우( getchar() ) 입력을 하면 바로 들어가는게 아니라 입력버퍼 라는 곳에 담긴다. 엔터가 들어올 때 까지 입력을 계속 담아두다가 엔터가 들어오면 입력을 중지하고 지.. 2012. 2. 26.
첫 테스트 글 테스트용 2012. 2. 7.
[C언어] 빙고게임 만들기. 소스 및 설명. 실행 파일 입니다. 혹시 테스트 해보실분 다운 받아서 실행 해보세요. 나름 문제점들을 많이 수정 했지만, 분명 완벽하진 않을테니 이것 저것 해보시고 에러 발생하는 경우를 댓글로 올려주시면 감사하겠습니다. ^^ 결과물과 소스. 주석이 있으니 기본적인 개념이 있으신 분들은 그냥 스샷만 보면서 넘어가셔도 금방 이해 하시리라 생각 됩니다. 소스가 번잡해서 안될지도 모르겠지만...... -,-; 사실 분명히 간단하게 하는 로직이 있겠지만; 제가 아는 지식 범위 내에서 만들다 보니 불필요한 작업이 많이 있을지 모릅니다. 혹시나 보시다 효과적인 과정이나 방법이 있다면 댓글 주시면 감사하겠습니다. 게임의 메뉴 선택 화면. 1번. 연습모드 선택 시. 12 입력 후. 엔터를 눌러야 화면에서 12 가 x로 치환. 2번 대전.. 2011. 10. 18.
[C언어] 문자열 자르기(strtok). 간단 예제 및 설명. 문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다. 예를 들어 123,234,578,422 같은 문자열에서 , 기준으로 123 234 578 422 로 추출할 수 있다. 원형 char *strtok(char *s1, char *s2); 사용법. strtok(대상문자열, 기준문자); 기준 문자열을 토큰이라고 함. 아래 소스는 메인에서 입력받은 문자열에서 : 을 기준으로 문자열을 나누는 코드. tmp = strtok(argv[1], ":"); 동작과정은, 우선 문자열에서 지정한 문자( : )를 찾고 그 위치를 null로 변경하다. a a a : b b b N ↑ 검색. a a a N b b b N ↑ NULL 로 변경. 그리고 문자열의 첫 주소를 반환한다. a a a N b b b N ↑첫 주소 변환 .. 2011. 9. 30.
[C언어] 간단하지만 순간 착각 하는 코드. [warning C4172] 리눅스에서의 경고 메시지 function returns address of local variable [enabled by default] 윈도우에서의 경고 메시지 warning C4172: returning address of local variable or temporary 얼필 보면 별 문제 없어 보이는 코드... 함수의 문제도.. 반환형의 문제도.. 반환 받는 놈의 타입도 문제 없다. 주소를 넘겨주고 주소를 받았는데 말이지 - -; 물론, 해결하는 방법은 여러가지 이다. 중요한건 왜? 이게 문제가 되느냐 이지. 문제가 되는 이유이다. 정말 좀 어처구니가 없었는데. 문제가 없을거 같지만 자세히 보면. getname() 함수에서 name[128]이라는 배열을 선언해서 사용하고 있다. 그리고는 그 na.. 2011. 9. 28.
[C언어] scanf의 기본과 문자 입력 안될 때 해결 방법. [C언어] scanf의 기본과 문자 입력 안될 때 해결 방법. [C언어] scanf의 기본과 문자 입력 무시 해결 방법. 기본적으로 scanf는 입력 받은 자료 수를 반환한다. 일반적으로 쓰는 경우는 거의 없기 때문에 본적은 없을지도 모른다. scanf는 값을 입력받아서 scanf( , ) 콤마 좌측에는 입력 받을 값의 형식을 지정해 준다. ex) 정수(%d), 실수(%lf), 문자(%c), 문자열(%s) 등등 우측에 지정해준 변수의 "주소" 에 내가 입력 받은 값을 저장한다. 따라서 변수의 주소를 추출하는 & 연산자가 필요. 지정한 형식과 변수의주소는 정확히 1:1 매치 되어야 한다. 형식을 3개를 적어주고는 변수를 3개 보다 적게 또는 많게 적어주면 문제가 발생한다. 특히나 scanf는 "변수의 주소.. 2011. 9. 21.
[C언어] getchar(), getche(), getc() 차이. 간단예제. [C언어] getchar(), getche(), getc() 차이. [C언어] getchar(), getche(), getc() 차이. [C언어] getchar(), getche(), getc() 차이. 비교 getchar() getche() getch() 버퍼 사용 O X X 화면 표시 O O X 종료 인식 \n \r \r getchar() 버퍼를 사용. 종료인식 ‘\n' 엔터치기 전까지는 입력한 내용 수정가능. 화면표시. getche() 버퍼사용x, 종료인식 ‘\r' 한번 입력되 문자는 수정 불가. 화면 표시 getch() 버퍼사용x, 종료인식 ‘\r' 한번 입력되 문자는 수정 불가. 화면 표시 x getch, getche 의 경우 입력하고 백스페이스를 누르면, 백스페이스 자체가 입력된다 - 0-; .. 2011. 7. 10.
[C언어] C언어 파일 경로 / 저장한 프로젝트 경로 / C언어 저장. [C언어] C언어 파일 경로 / 저장한 프로젝트 경로 / C언어 저장. C언어 코딩을 통한 파일 검색이 아닌, 내가 작업중인 파일의 저장된 경로를 보는 방법 입니다. 물론, 처음 프로젝트를 생성할 때 지정하기도 하지만, 습관적으로 그냥 넘어가거나 하기 때문에 - 0-;; 간단한 2가지 방법을 적어보겠습니다. 1. Ctrl + N (New 창을 새로 연다.) 즉, File -> New 를 선택하고 Location 을 누른다. 아마 이렇게 많이 사용할거 같은데요. 프로젝트 명 전까지의 경로는 지정이고. 거기서 지정한 프로젝트 명으로 폴더가 생성되고 그 안에 내용이 저장 되지요. 따라서 새로 만들기를 통해 지정된 경로를 찾아가서 지금 작업중인 프로젝트 명으로 된 폴더에 가면 됩니다. 2. Alt + Enter.. 2011. 5. 23.