C언어/유용한 것

    파일입출력 feof , fseek , fgetc

    파일 암호화를 시키다가 파일 끝을 어떻게 확인할까 찾아보던중 발견한 대안책 처음엔 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개의 배열 크기가 필요합니다. 배열의 구조를 논리적으로 표현 할 때 첫번째 배열의 크기는 행의 개수가 되고 두번째 배열 크기는 열의 개수가 됩니다. 따라서 첫번째 배열 크기에 대한 인덱스는 행번호가 되고 두번째 배열크기에 대한 인덱스는 열의 크..

    #define 과 const 선언의 차이점

    저번엔 const라는 변수를 상수화 시키는 선언에 대해 알아보았는데요 오늘 알고리즘 문제를 풀어보다가 #define 사용자 전 처리기를 사용하다가 const 선언과 #define의 차이점을 찾아보게 되었습니다. #define이란 값을 상수를 정의하는 기능을 하는데요 #define 상수명 값 이렇게 사용 하면되는데 여기서 상수 이름을 매크로라고 하고 값을 대체 리스트라고 한다고 합니다. 그리고 #define은 끝에 세미콜론(;)을 붙이면 안된다는 점을 유의해야 합니다. 세미콜론을 붙이면 세미콜론까지 함께 값에 치환이 된 다고 합니다. 이렇게 만들어진 것을 매크로 상수라고 하고 뒤의 값은 공백까지 포함하여 존재 할수 있다고 합니다. const선언과 마찬가지로 프로그래머가 소스코딩을 짤 때 변경되어서는 안되는..

    포인터 대상의 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..

    특수문자의 종류

    특수 문자 의미하는 바 \a 경고음 \b 백스페이스 (backspace) \f 폼 피드 (form feed) \n 개 행 (new line) \r 캐리지 리턴 (carriage return) \t 수평 탭 \v 수직 탭 \' 작은 따옴표 출력 \" 큰 따옴표 출력 \? 물음표 출력 \\ 역슬래쉬 출력

    기본 자료형의 종류와 데이터의 표현범위

    자료형 크기 값의 표현 범위 정수형 char 1 바이트 -128이상 +127이하 short 2 바이트 -32,768이상 +32,767이하 int 4 바이트 -2,147,483,648이상 + 2,147,483 ,647 이하 long 4 바이트 -2,147,483,648이상 + 2,147,483 ,647 이하 long long 8 바이트 -9,223,372,036,854,775,808 이상 +9,223,372,036,854,775,807 이하 실수형 float 4 바이트 ±3.4 X 10^-37 이상 ±3.4 X 10^+38 이하 double 8 바이트 ±1.7 X 10^-307 이상 ±1.7 X 10^+308 이하 long double 8 바이트 이상 double 이상의 표현 범위 Unsigned를 붙여서..