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..

    배열의 길이를 계산하고 싶을때

    int main(void) { int arr1[5] = {1,2,3,4,5}; int arr2[ ] = {1,2,3,4,5,6,7}; int arr3[5] = {1,2}; int ar1Len,ar2Len,ar3Len,i; printf("배열 arr1의 크기 : %d \n",sizeof(arr1)); printf("배열 arr2의 크기 : %d \n",sizeof(arr2)); printf("배열 arr3의 크기 : %d \n",sizeof(arr3)); ar1Len = sizeof(arr1) / sizeof(int); // 배열 arr1의 길이 계산 ar2Len = sizeof(arr2) / sizeof(int); // 배열 arr2의 길이 계산 ar3Len = sizeof(arr3) / sizeof(i..

    배열의 선언과 동시에 초기화하기

    배열의 초기화 방법은 총 세가지로 구분이 가능하다. int arr1[5] = { 1,2,3,4,5 }; // 순차적으로 1,2,3,4,5 로 초기화 함 두번째 초기화 방법이다. int arr2[] = { 1,2,3,4,5,6,7 } // 컴파일러에 의해서 자동으로 7이 삽입된다. == int arr[7] = {1,2,3,4,5,6,7} 과 동일하다. 세번째 초기화 방법이다. int arr3[5] = { 1,2 }; // 3,4,5 번째 배열요소는 0으로 채워진다.

    Visual Studio 테마 변경하기

    Visual Studio에서는 기본적으로 흰색 배경에 검은색 글자로 구성되어 있는데요. 하지만 이것들은 여러가지 색삭으로 변경 할 수 있습니다. 아래의 주소에서 여러가지 스타일을 미리 보여줍니다 ( 다운로드 횟수나 View한 횟수도 모두 나오기 때문에 참고 하시기 바랍니다. )주소 : http://studiostyl.es/schemes 이 홈페이지에서는 Visual Studio version에 맞는 파일을 각각 제공하기 때문에 자신의 Visual Studio version에 맞는 파일을 다운 로드 하시기 바랍니다. 마음에 드는 테마를 받고 Visual Studio를 실행합니다. 스타일의 적용 전의 화면 입니다. 스타일을 받으셧으면 이제 적용을 하셔야 겠죠? 스타일을 적용하려면 메뉴바에서 도구(T) - >..