목록C언어/유용한 것 (9)
Mafa Dev
파일 암호화를 시키다가 파일 끝을 어떻게 확인할까 찾아보던중 발견한 대안책 처음엔 feof를 사용하였지만 feof 함수는 파일의 끝을 만나면 0 이아닌 수를 리턴하게 되는데 이때 파일의 끝에서 EOF를 만났을 때 0이 아닌 수를 리턴하는 것이 아니라 EOF를 만나고 그 파일 포인터에 또다시 접근하면 그때 NULL값을 리턴하여 0이 아닌 수를 리턴시켜 주는 것이었다. 그러므로 문제점이 있어서 발견한 방법으로 파일의 끝을 확인하기 위해 먼저 fgetc(STATE_FILE)!=-1 이런식으로 파일포인터에서 파일을 불러 올수 있는지 없는지를 화일문에서 확인시켜준 다음 fseek(STATE_FILE , -1 , SEEK_CUR) 함수를 사용해 다시 함수를 앞으로 땡겨줌
구조체도 배열처럼 여러 개의 데이터를 그룹으로 묶어서 하나의 자료형으로 정의하고 사용하는 자료형입니다. 배열은 같은 자료형만을 그룹으로 묶을 수 있지만 , 구조체는 서로 다른 자료형을 그룹으로묶을 수 있으므로 복잡한 자료 형태를 정의하는 데 유용하게 사용합니다. 구조체 변수의 선언 방법 ① ② ③ struct employee{ char name[10]; int year; int pay; }; struct employee Mafa; struct employee{ char name[10]; int year; int pay; } Mafa; struct { char name[10]; int year; int pay; } Lee; ①은 구조체 선언 을 한 후에 변수를 선언하는 방법이고, ②는 구조체와 구조체 변수..
배열은 배열 요소들을 2차원 , 3차원으로 만들어서 2차원 배열 , 3차원 배열을 나타낼 수 있습니다. 즉 2차원 배열은 배열의 배열이고 , 3차원 배열은 배열의 배열의 배열입니다. 2차원 이상의 배열을 다차원 배열이라고 합니다. 다차원 배열의 선언 2차원 배열은 배열의 배열이므로 선언 방법이 1차원 배열과 같은 형식이면서 늘어난 만큼 []를 더 추가하고 그 안에 배열의 크기를 넣어줍니다. 자료형 배열 이름 [배열 크기][배열 크기] 2차원 배열은 차수가 2므로 2개의 배열 크기가 필요합니다. 배열의 구조를 논리적으로 표현 할 때 첫번째 배열의 크기는 행의 개수가 되고 두번째 배열 크기는 열의 개수가 됩니다. 따라서 첫번째 배열 크기에 대한 인덱스는 행번호가 되고 두번째 배열크기에 대한 인덱스는 열의 크..
저번엔 const라는 변수를 상수화 시키는 선언에 대해 알아보았는데요 오늘 알고리즘 문제를 풀어보다가 #define 사용자 전 처리기를 사용하다가 const 선언과 #define의 차이점을 찾아보게 되었습니다. #define이란 값을 상수를 정의하는 기능을 하는데요 #define 상수명 값 이렇게 사용 하면되는데 여기서 상수 이름을 매크로라고 하고 값을 대체 리스트라고 한다고 합니다. 그리고 #define은 끝에 세미콜론(;)을 붙이면 안된다는 점을 유의해야 합니다. 세미콜론을 붙이면 세미콜론까지 함께 값에 치환이 된 다고 합니다. 이렇게 만들어진 것을 매크로 상수라고 하고 뒤의 값은 공백까지 포함하여 존재 할수 있다고 합니다. const선언과 마찬가지로 프로그래머가 소스코딩을 짤 때 변경되어서는 안되는..
포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언 아래의 코드에서 보이는 바와 같이 포인터 변수 mafa를 대상으로도 const 선언을 할수가 있다. int main(void) { int num = 20; const int * mafa = # * mafa =30 ; // 컴파일 에러!!!!! num = 40; // 컴파일 성공! } 위의 예제에서 주의 깊게 볼 곳은 const 의 선언 위치이다. 이 예제에서 선언된 const의 뜻은 "포인터 변수 mafa를 이용해서 mafa가 가리키는 변수에 저장된 값을 변경하는 것을 허용하지 않겠다! " 라는 의미이다. 그렇다고 해서 포인터 변수 mafa가 가리키는 변수 num이 상수화가 되는 것은 아니다. 다음 예제를 보자 int main(v..
서식문자 출력 대상(자료형) 출력형태 %d char , short , int 부호 있는 10진수 정수 %id long 부호 있는 10진수 정수 %iid long long 부호 있는 10진수 정수 %u unsigned int 부호 없는 10진수 정수 %o unsigned int 부호 없는 8진수 정수 %x , %X unsigned int 부호 없는 16진수 정수 %f float , double 10진수 방식의 부동소수점 실수 %Lf long double 10진수 방식의 부동소수점 실수 %e , %E float , double e 또는 E 방식의 부동소수점 실수 %g , %G float , double 값에 따라 %f와 %e 사이에서 선택 %c char , short , int 값에 대응하는 문자 %s ch..