컴퓨터공부 362

대각선 순으로 배열 값 입력

코드들이 맘에 들지 않는다.. + #include int map[9][9]; FILE *in = fopen("input.txt", "r"); FILE *out = fopen("output.txt", "w"); void print(int num) { int i, j; for(i =0 ; i < num; i++) { for(j =0 ; j < num; j++) fprintf(out,"%d ", map[i][j]); fprintf(out, "\n"); } } void assign( int num) { int i, j; int increase; // 오른쪽으로 갈때마다 증가되는 값 int divide; // 오른쪽 대각선으로 가르는 것 확인 int plus_num; for(i =0 ; i < num; i++) ..

미로찾기(백트래킹, backtracking)

#include int map[7][7] = {{2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 2, 0, 2, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2}}; int visit(int x, int y); int success; int start_x, start_y; int end_x, end_y; void main() { start_x = 1; start_y = 1; // 시작지점 end_x = 5; end_y = 5; // 최종도착지점 success = 0; printf("미로 찾기\n"); if(!visit(1,1)) prin..

CRT(C Runtime Library)의 디버그 기능 사용하기

CRT Debug 기능 사용법 일반적으로 가장 잡기 힘든 버그의 하나로서 메모리 누수, 메모리 Overwrite등을 꼽을 수 있다. 이런 문제점을 해결하기 위해 CRT(C Runtime library)에서는 여러가지 다양한 메모리 관련 디버그 함수들을 제공한다. 그러나 이것들이 디폴트로 사용하기 힘들게 꺼져 있기 때문에 대부분의 프로그래머들은 이 사실을 알지 못하는 경우가 많다. 그래서 이 글에서는 CRT의 디버그 관련 함수들에 대해 알아보고 어떻게 사용하는 것이 좋은지에 대해 논해 보려고 한다. John Robbins(필자가 가장 좋아하는 프로그래머 중의 한명)가 지은 Debugging Applications 이라는 책에도 좋은 내용들이 있으니 참고하기 바란다. 그러나 여기 나온 팁은 그 책에는 나와 ..

메모리 릭(메모리 유출, memory leak)을 잡아보자

많은 프로그래머들이 프로그램을 짜면서... 메모리 릭을 많이 발생시킵니다.. 대수롭지 않게 생각하는 프로그래머들이 많은데.. 실상은 가장 심각한 버그 중에 하나입니다.. 당부 말씀드리자면... 제발 그러지 말아 주세요.. ㅎㅎ 그럼 메모리 릭을 어떻게 잡아야할까요.. 코드 짤때부터 새지 않도록 짜는게 중요하지만.. 인간인 이상 완벽할 수 없습니다.. 그럴땐 도움을 받아야 합니다.. 다음 코드 보시죠.. #include #ifdef _DEBUG #define new new(_CLIENT_BLOCK, __FILE__, __LINE__) #endif void main() { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); int* a = new..

little endian, big endian, 리틀 엔디안, 빅 엔디안

1. 빅 엔디안 (Big-Endian) 시작 주소에 하위 바이트부터 기록 ( Intel 80x86 (IBM-PC), DEC VAX, DEC PDP-11 ) 주로 SCO 유닉스나 MS 윈도우가 돌아가는 Intel 프로세서 계열 시스템 => 1 2 | 3 4 | 5 6 | 7 8 2. 리틀 엔디안 (Little-Endian) 시작 주소에 상위 바이트부터 기록 ( IBM370, Motorola 68000, Pyramid ) 상용 UNIX가 주로 돌아가는 RISC 프로세서 계열 시스템 => 7 8 | 5 6 | 3 4 | 1 2

컴퓨터공부 2007.08.07

가변인수

아래에 있는 코드를 보면 쉽게 파악 할 수 있을 것이다. 다음과 같은 형식으로 접근하면 'format' 에 들어 있는 데이터가 'tiny_printf' 문의 처음 인자로 들어가게 된다. 그럼 'format'에는 "sddd"가 들어있게 되겠다. 'va_arg'를 이용하면 다음 인자(result..., 3, 5, 1)를 접근할 수 있다.(va_arg는 자동으로 인덱싱하여 다음 인자를 접근하는 것 같다.) + printf()와 scanf()와 같은 가변 인자를 받는 함수를 만들거나 이 함수를 덮어 쓰는 wrapper를 만들려면 가변 인자를 처리할 줄 알아야 합니다. 가변 인자를 처리할려면 다음과 같은 data type과 함수 (또는 매크로 함수)를 써야 합니다: va_list -- type va_start(v..

Putty와 UTF-8의 지겨운 고리를 끊었다.

작은 일에서 행복을 느껴볼까... 뭐 이곳이 아무리 거지 같은 곳이라도 내 나름대로의 유희라도 없으면 어떻게 살리요. 요새 리눅스는 열풍과도 같이 UTF-8이 번져가고 있다. 이는 당연한 추세라고 생각되지만 이것이 의외로 완성형에 길들여진 우리들에게는 은근히 힘들고도 힘든 선택이다. 스프링노트에 MySQL에 UTF-8을 적용한 DB를 구축하기 위해서 MySQL의 설정을 손보던 분이 말했던 것처럼 멀티바이트 문자권의 서러움이란 생각외로 UTF-8을 사용하다보면 심각하게 느껴진다. 가장 먼저 나를 서럽게 한 것은 Putty이다. 난 Putty를 참 좋아한다. 투박한 검은 화면과 단순명쾌한 인터페이스는 나를 감동시켰고, 심지어는 Putty를 사용하기 위해서 C++를 g++이라는 도구 단 하나로 디버깅을 하는 ..

임베디드 프로그래머 책 추천...

Books recomendation for embedded programmer. 옵션 현재 이 그룹에 우선 표시되는 주제가 너무 많습니다. 이 주제가 우선 표시되도록 하려면 다른 주제에서 이 옵션을 제거하십시오. 귀하의 요청을 처리하는 도중 오류가 발생했습니다. 다시 시도해 주십시오. 표준 보기 트리 보기 비례 텍스트 고정 텍스트 6개의 메시지 - 모두 확장 메시지를 게시하실 그룹은 유즈넷 그룹입니다. 이 그룹에 메시지를 게시하시면 인터넷의 모든 사용자가 귀하의 이메일을 볼 수도 있습니다. 답장이 전송되지 않았습니다. 성공적으로 게시되었습니다. s...@easynet.be 프로필 보기 추가 옵션 5월1일, 오전12시21분 뉴스그룹: comp.arch.embedded 보낸 사람: s...@easynet.b..