C언어 로또번호 생성하기 (당첨확률높이기)

_C언어 로또번호 생성하기 핵심요소조건문, 반복문, 함수, 배열, 포인터, 구조체 사용정렬, 짝수&홀수 판별라이브러리 함수 이번 포스팅에서 로또 번호를 출력을 해보려 합니다.일반적인 1~45 사이의 숫자 6개를 랜덤하게 뽑아내는 것이 아니라 조건을 넣어 출력을 해봅시다.해당 조건을 넣음으로써 다양하게 프로그래밍을 연습 할 수 있습니다.(극악의 번호들이 나올 경우를 줄여 당첨 확률을 높일 수 있습니다.) 조건1) 원하는 만큼 출력 할 수 있어야 한다.조건2) 같은 줄에 중복된 숫자가 없어야 한다.조건3) 같은 줄에 숫자가 모두 홀수가 아니어야 한다.조건4) 같은 줄에 숫자가 모두 짝수가 아니어야 한다.조건5) "1-2-3-4-5-6" 과 같은 수열이 아니어야 한다. - 헤더 파일, 함수를 우선 선언 하여 ..

C언어 형(Type)이 존재하지 않는 void 포인터

void * ptr; 이것을 가리켜 void형 포인터 변수라 한다. void형 포인터 변수는 무엇이든 담을 수 있는 바구니에 비유할 수 있다. void현 포인터 변수에는 어떠한 변수의 주소 값이든 잠을 수 있다. 하다못해 함수의 주소 값도 담을 수 있다.아래의 예제를 살펴보자.#include void SoSimpleFunc(void) {printf("I'm so simple");} int main(void) {int num =20;void *ptr; ptr = # // 변수 num의 주소 값 저장printf("%p \n", ptr); ptr = SoSimpleFunc; // 함수SoSimpleFunc의 주소 값 저장printf("%p\n", ptr);return 0;} 위의 예제에서 보이듯이 무엇..

C언어 함수 포인터 변수

포인터란? - 바로가기 프로그래머가 정의하는 모든 함수는 프로그램 실행 시 '메인 메모리'에 저장되어서 실행이 된다.그리고 함수의 이름은 메모리상에 저장된 함수의 주소 값을 의미한다. 그럼 함수 포인터 변수를 어떻게 선언 해야 할까?우선 함수 포인터의 포인터 형을 결정 해야한다. 아래의 문장을 보자.int simple_func(int num) { . . . }이 함수의 반환형은 int 이며 매게변수의 선언은 int num이며 함수의 이름은 simple_func는 함수 이름이며 함수의 주소값을 의미하는 상수형태의 함수 포인터가 된다. 자 여기서 simple_func의 형(type)은 무엇일까? 우리는 포인터의 형(type)은 반환형과 매게변수의 선언형태를 기준으로 구분하기로 약속 되어있다. 따라서 simp..

C언어 '포인터 배열'과 '배열 포인터'의 차이점

주로 포인터와 배열에 처음 입문한 사람들미 많이들 힘들어 하는데 그중 하나가 '배열 포인터'와 '포인터 배열'이다.저 두개의 말만 보아도 머리가 아파온다 하지만 어떻게 보면 그리 어렵지도 않은 것들이다.아래의 문장들을 보자. int * who_a[4]; // 포인터 배열int (*who_b)[4]; // 배열 포인터 감이 오는가? who_a와 who_b의 유일한 차이점은 소괄호의 유무이다. 하지만 이 하나의 차이가 꾀나 다른 뜻을 가진다. 우선 who_a는 int형 포인터의 배열이다. 즉, 배열의 선언이 되는 것이다.who_b는 int형의 배열을 가리키는 포인터 변수이다. 이것은 포인터 변수의 선언이 된다. 아래의 소스코드를 참고하면 이제 완벽히 알 수 있을 것이다. #include int main(vo..

C언어 파일 입출력 - 스트림(Stream)의 형성과 fopen함수

스트림이란(Stream)쉽게말해 사용자가 구현하려는 프로그램(Program)에서 파일(File)을 사용하기위해서는 파일(File)과 프로그램(Program)사이에 다리(Bridge)를 놓아야하는데 이 다리(Bridge)를 스트림(Stream)이라 한다. 하지만 실제로 다리가 놓이는 것은 아니며 스트림이 형성이 되었다고 한다면 이렇게 이해를 하면 좋을것 같다." 파일로부터 데이터를 읽어 들일(파일에 데이터를 쓸) 기본적인 준비가 완료 되었다 "그리고 알아두어야 할 점은 운영체제가 파일의 구조를 결정하고 관리하기에 스트림의 형성도 운영체제가 해준다. #includeFILE * fopen(const char * filename, const char * mode);- 성공 시 해당 파일의 FILE 구조체 변수의..

C언어 포인터(Pointer)란? 포인터의 완벽 이해

"포인터란 어떠한 값을 저장하는게 아닌 어떠한 값의 주소(Address)를 저장하는 것 이다!" 어떠한 값의 주소라함은 해당값이 저장된 컴퓨터 메모리상의 주소를 의미한다.ex) num이라는 변수에는 5의 값이 저장되어있다. 그리고 *pnum이라는 포인터 변수에는 num의 주소 123456이 저장 된다는 것이다. 포인터 변수를 만들때는 변수이름앞에 *을 붙여주면 그변수는 포인터 변수가 된다.(사용할때 일반변수와의 구분을 위해 주로 '*p변수이름'의 형식으로 사용한다.) 간단하게 포인터 함수를 이용하여 포인터 변수 정의와 &연산자에 대하여 설명을 하겠다.#include int main(void){int *pnum; // 포인터 변수 선언int num = 12345; // 일반변수 선언 & 초기화pnum = ..