본문 바로가기

c언어

파일 처리 함수(c언어) 파일 구조 1. 핸들을 인자로 하여 파일을 쓰거나 읽는 함수호출 write(file*) 2. OS는 핸들에 해당하는 커널오브젝트의 내용을 보고 파일 물리적 위치에 연결되어 있는 스트림을 통해서 파일에 정보를 전달하거나 받아옴 3. 스트림 중간에 있는 버퍼에 정보를 읽거나 쓰기를 하고 한번에 정보를 모아서 보내거나 읽어옴 4. OS는 파일에 변화가 생긴 내용에 대해서 커널오브젝트의 파일에 관한 정보에 정보를 갱신함 fopen함수 FILE* fopen(const char*, const char*); 첫번째 인자 : 처리하려는 파일 이름 두번째 인자 : 처리하려는 파일 처리의 종류(모드) 파일을 열면 무조건 파일포인터는 0을 가리킴 모드 종류 모드 의미 r 읽기 모드로 파일을 열음 파일이 없으면 에러 w 쓰기.. 더보기
printf function(함수) - %s, %c차이 char *a = "1234"; printf ("%s, %c", a, *(a)); %s는 char *형을 요구 %c는 char형을 요구 %s는 주소값을 받고 그 주소값에 안에 저장되어 있는 문자를 시작으로 \0이 나올 때까지의 문자열을 출력 %c는 실제 문자을 받아서 그 문자열을 출력 더보기
문자열 (c언어) printf(), scanf(), putch(), getch() char* gets(char *) 문자열을 입력하고 입력 받은 첫문자의 주소 값을 반환 enter키(개행문자=\n) 누를때까지 공백을 포함한 모든 문자열 입력받음 마지막에 enter키 넣지 않고 마지막에 문자열을 의미하는 NULL문자(\0)을 넣음 int puts(char *) 인자인 문자열에서 마지막 NULL문자를 제외한 모든 문자열과 마지막에 개행 문자인 \n을 출력 일반적으로 0반환, 오류가 발생하면 EOF(end of file=-1)을 반환 반환값이 int인 이유는 char로 하면 1바이트만 사용하기 때문에 -1(11111111)과 255(11111111)를 똑같이 인식하기 때문에 구분하기 위해서 4바이트인 int를 사용 int에서는.. 더보기
포인터(c언어) 포인터 int b=3; printf("%d", b);과 같은 구문 있다고 하면 b는 컴파일시 어떤 주소값을 나타내는지 컴퓨터가 처리해서 알고 있는 상태임 b에 해당되는 메모리의 주소를 찾아간다 그 메모리 주소 안에 저장되어 있는 내용을 확인하고 가져와서 printf함수에서 사용하게 되는 것 int b=3; int *a = &b; printf("%d", *a); 맨 아래의 *a의 의미 1. a는 컴파일시 어떤 주소값을 나타내는지 컴퓨터가 처리해서 알고 있는 상태 a에 해당되는 메모리 주소를 찾아감 2. 그 메모리 주소안에 저장되어 있는 내용을 확인하고 가져옴 3. 가져온 값은 주소값을 나타내고 있으므로 그 주소값을 찾아감 4. 그 메모리 주소안에 저장되어 있는 내용을 확인하고 가져옴 int tAry[][2.. 더보기
[윈도우 api]윈도우 api 기본구조 윈도우 api 기본 구조 인스턴스 핸들 = 코드 영역의 메모리주소 윈도우(os)는 리소스(메뉴, 브러시, 윈도우 창 등)를 관리하기 위해서 커널 오브젝트를 생성, 커널 오브젝트안에는 리소스에 대한 정보가 들어 있고 이 커널 오브젝트에 특정한 핸들(주소 값)을 부여함, 그리고 실행되는 프로그램에 윈도우(os)가 이 부여된 핸들을 전달 받은 핸들(주소 값)을 통해서 커널 오브젝트에 접근이 가능하고 여러가지 기능을 수행 할 수 있음 콜백함수(윈도우 프로시저)와 윈도우 및 윈도우에 대한 메세지와의 관계 무슨 변화가 생기면 이 변화에 대한 메세지가 어느 윈도우로 보낼 것인지 잘 생각해봐야 함 윈도우 프로시저는 윈도우 클래스당 하나씩 배정되며 메시지에 대응하는 방식을 정의함으로써 윈도우의 행동 양식을 결정 한 클래.. 더보기
해킹 공부 해킹 공부 과정(단계) 1. 인터넷이나 TCP/IP등 네트워크 기초이론과 운영체제의 설치, 운용, 서버구축방법 등의 기초 다지기 2. 컴퓨터 언어인 C언어와 POSIX-C 같은 것을 배우기 3. 시스템, 네트워크프로그래밍을 배우기 4. 버퍼 오버플로우, 웹 해킹, 네트워트 해킹, 포맷 스트링 등등 익히기 5. 바이너리 파일 디버깅 실습을 위한 어셈블리어를 익히기 6. 운영체제 커널 공부 3년정도 공부하면 기초를 다진것.... 6. 이제부터 시작이다~ 닥치는 대로 만들고 분석하라 자신만의 해킹기법을 만들고 터득해라~ 더보기
프로그래밍 공부 순서 1. c언어 완전 기본 문법 2. 운영체제론 3. 시스템 프로그래밍 4. linux kernel 5. kernel programming C 프로그래밍 관련 학습 로드맵 입니다. A.c언어 / c++ / Visual c++ MFC / Com프로그래밍/Atl 프로그래밍 B.C언어/win32 API 프로그래밍/윈도우 네트워크 프로그래밍/ 윈도우 시스템 프로그래밍/Com프로그래밍/ATL프로그래밍 WIn31API + C++ /입문자 과정입니다. Visual C++ MFC + 윈도우 네트워크 프로그래밍 / 중급자 과정입니다. Com프로그래밍 부터는 전문과 과정입니다. 대략 배워야 하는 순서를 말씀드렸습니다. 더보기
포인터(pointer)에 대해서!! C Language를 공부하면서 가장 이해하기 어려운 것이 무어냐고 물어본다면, 아마도 거의 대부분 "바로 포인터(Pointer)라는 녀석이다!" 라고 말할 것입니다. C에서 다른 건 다 이해가 되어도 "포인터 만큼은 죽어도 모르겠다" 라고 말하는 경우를 제 주변에서도 심심치 않게 봐왔습니다. 사실 C는 어려울 수밖에 없습니다. C를 그저 프로그래밍의 기초 과정에서 배우는 옛날 언어라고 생각하고 가볍게 볼만큼 만만한 녀석이 전혀 아닙니다. C는 어셈블리(Assembly)의 사촌입니다. 다시 말하면, C는 하드웨어 - 특히 마이크로프로세서(CPU)와 친한 녀석입니다. 때문에 하드웨어에 대한 기반 지식없이는 C를 제대로 이해할 수가 없습니다. 포인터라는 녀석이 특히 그렇습니다. C를 강력하게 만드는 무기가 .. 더보기