일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- do it c
- MyTread
- Time
- C++
- 정처기 독학
- 충무창업큐브
- mysql
- 별찍기
- tips강좌
- MFC 예제
- MFC
- 유료강좌
- mfc 실습
- 실습
- 도움말
- 정보처리기사
- win32
- linux
- ListBox
- 김성엽
- SSG
- C
- 미가공
- Tipsware
- MyThread
- C언어
- visual
- 핵심 요약
- 포트폴리오
- 마이크로소프트
- Today
- Total
목록do it c (17)
History

이번 차시 실습에서는 텍스트 파일에 저장된 특정 문자를 찾아서 원하는 단어로 바꾸는 실습을 진행한다. 파일에 기록된 내용을 변경하려면 파일 입출력에서의 옵션을 변경해야 한다. w+: 쓰기 우선 읽기모드 r+: 읽기 우선 쓰기모드 a+: 이어쓰기 우선 읽기 모드 1. 옵션 읽기와 쓰기 모두 작업하면서 원하는 위치에 데이터를 쓰더라도 다른 데이터에 영향을 미치지 않게 하려면 r+ 옵션을 사용해야한다. 만약 지금 사용하는 파일이 텍스트 파일이라는 것을 강조하고 싶으면 r+t라고 사용하면 된다. 2. 단어 찾기 원하는 단어를 찾기 위해서는 strstr 함수를 사용하여 특정 단어를 찾는다. strstr 단어는 string.h 헤더파일에 있기 때문에 include를 해줘야한다. strstr 함수는 추후에 따로 정리..
이번 차시에는 fgets 함수에 대해서 정리를 해보겠다. 1. fgets 함수 fgets 함수는 FILE 구조체를 사용하여 파일 입출력 스트림에서 문자열을 가져오는 함수이다. 원형은 아래와 같다. C++ char *__cdecl fgets(char *_Buffer, int _MaxCount, FILE *_Stream) 첫 번째 매개변수 Buffer는 파일에서 읽은 문자열을 저장할 메모리의 주소를 넘겨주면 된다. 두 번째 매개변수 MaxCount는 Buffer 즉 배열의 크기를 적으면 된다. 세 번째 매개변수 Stream은 파일 포인터를 적으면 된다. 파일 포인터는 FILE 구조체를 사용해서 텍스트 파일을 관리하는 포인터를 말한다. fgets 함수는 보통 개행(\n) 문자를 만날 때까지 문자열을 읽는 것이..

이번 차시에서는 data.txt에 있는 텍스트를 한 줄씩 읽어와서 출력하는 프로그램을 실습하겠다. 파일을 여는 함수는 fopen_s 함수를 사용하고 한 줄씩 텍스트를 읽는 함수는 fgets함수를 사용하겠다. 파일의 위치는 현재 작업경로에 넣었다. fgets 함수는 파일에서 더 이상 읽을 텍스트가 없는 경우에 NULL을 반환한다. 그래서 반복문으로 프로그램을 구성하면 텍스트 파일을 한 줄씩 읽다가 텍스트를 다 읽으면 종료하는 코드를 만들 수 있다. 완성된 코드는 아래와 같다. #include #pragma warning(disable:4996) #define MAX_LENGTH128 int main() { int line_count=0; //라인 줄 수 char buf[MAX_LENGTH]; //문자열을 ..

아래 코드와 같이 CImage 객체에 그림을 그려서 Save 함수를 사용하면 png 형식으로 이미지가 저장된다. m_draw_image.Save(L"1.png", Gdiplus::ImageFormatPNG); //이미지 객체에 그려진 png 파일을 저장한다. 나는 아래와 같은 이미지에 사각형을 넣었다. 현재 검은색 바탕은 가상 dc에 색상을 지정하지 않아서 검은색으로 보이는 것이다. 이렇게 되면 어떠한 이미지에 아래 사진을 올려놓으면 검은색 바탕 때문에 뒤의 이미지를 가릴 것이다. 이제 이 검은색을 투명화시켜서 사각형만 출력하고 배경은 없애겠다. 아래 코드는 CImage에 투명화 속성을 활성화시키는 코드이다. 이제 비트 단위로 색상을 분석하여 검은색이면 Alpha 값에 0xFF를 대입하면 배경이 투명화된..
질문: 안녕하세요. do it c언어 책에 있는 반복 횟수 관련 설명이 잘 이해되지 않습니다.(p.521~522) 20바이트 배열을 4바이트씩 5번 파일에서 read 한 것과 20바이트로 1번 파일에서 read 한 것이 동일한 결과가 나오는 건가요? 답변: 네 맞습니다. 20바이트 배열을 4바이트씩 5번 파일에서 read한 것과 20바이트로 1번 파일에서 read 한 것이 동일한 결과가 나옵니다. 아래 코드를 보시면 이해가 잘 될 겁니다. #include #pragma warning(disable:4996) int main() { int a=100; // int 안에 100 대입 int data[5] = {1,2,3,4,5}; // 1,2,3,4,5가 들어있는 int 배열 int temp[5] = {};..

*시프트 연산자의 기능 시프트 연산자()는 변수의 값을 지정한 비트 수만큼 왼쪽 또는 오른쪽으로 비트를 이동시키는 기능을 한다. 예시는 아래 코드와 같다. unsigned char data= 0x1A; //변수 오른쪽에서 왼쪽 이동 //이동 전-> 0001 1010 data= data> 이동할 비트 수 -> 왼쪽에서 오른쪽으로 이동 //이동 전-> 0001 1010 data= data>>2; //2칸을 왼쪽에서 오른쪽으로 밀겠다 //이동 후-> 0000 0110 위의 예시처럼 이동한 비트들이 할당된 메모리의 크기를 벗어나면 해당 비트들은 사라지고 비트가 이동한 빈자리에는 0이 채워진다. 비트가 왼쪽으로 이동해서 사라지는 것을 오버플로(overflow) 비트가 오른쪽으로 이동해서 사라지는 것을 언더 플로(..

일반적으로 비트는 0 또는 1을 저장할 수 있는 공간이다. 예를 들면 전등을 제어하려고 한다. 전등은 키는 동작 그리고 끄는 동작이다. 전등은 이 두 가지로 제어할 수 있다. 문자 그대로 "켜지다, 꺼지다" 이렇게 제어하면 문자열을 처리해야 하기 때문에 보통 0이면 끄는 동작 1이면 키는 동작으로 우리는 약속하고 있다. 이러한 상황에서 우리는 0과 1을 비트로 제어할 수 있다. 그러나 비트연산자를 잘 모르면 자료형 중에서 가장 작은 단위인 char(1바이트==8비트)를 사용해서 0과 1을 대입하여서 전등을 제어할 것이다. 물론 전등이 1개만 있는 경우에는 괜찮지만 800개의 전등이 있을 시 char로 전등을 제어하면 800바이트를 사용할 수밖에 없다. 그러나 비트로 전등을 제어하면 100바이트로 전등을 ..
1. 일반 지역 변수의 초기화 일반적으로 변수를 초기화를 시키려면 아래 코드처럼 사용할 수 있다. int data=0; //선언과 동시에 0으로 초기화 int data={0}; //선언과 동시에 0으로 초기화 int data={0,}; //,를 적어도 선언과 동시에 0으로 초기화 그러나 아래와 같은 코드는 2개 이상의 값을 사용하여 초기화를 하려고 하기 때문에 오류가 발생한다. int data{0,1}; //한 개의 메모리에서 2개를 초기화 시키면 오류 2. 배열의 초기화 배열은 메모리를 그룹 짓는 개념이기 때문에 변수를 선언하면서 0으로 초기화를 시키려면 {}를 사용해서 배열의 개수만큼 초깃값을 나열해야 한다. int arr[5]={0,0,0,0,0}; //배열의 모든 항목이 0으로 초기화 하지만 배열..