티스토리 뷰
여러가지 대안들이 있으며, 활동하기에 어려운 점이 있어 폐쇄함.
일단 거기서 나온 이야기는 백업.
기본적인 화면 구성은 curses.h 만 가지고도 가능하다.
ncurses는 curses.h의 wrapper.
윈도우에서는 PDCurses를 사용할 수 있다.
Visual C++에서 사용가능
<pre>
/* Hello Curses on Windows */
#include <tchar.h>
#include <curses.h>
int _tmain(int argc, _TCHAR* argv[])
{
initscr();
mvprintw(10,20,"Hello, Curse");
refresh();
getchar();
endwin();
return 0;
}
</pre>
문자 'A'와 문자열 "A"는 다르다. 선언해야 할 Type이 다름!
테트리스와 인베이더의 만남
http://www.oldschoolapps.com/arcade/flash-games/1443-retro-mash-tetris-meets-space-invaders
레퍼런스
https://wiki.kldp.org/wiki.php/NCURSES-Programming-HOWTO
포인터를 이용해서 메모리 내용을 보여주는 프로그램을 만들었습니다. 아직 ncurses로 만들어 지지 않았구요.. 만든다면 창을 하나 띄워서 주소 검색등을 해보게 할 수 있겠네요.
<pre>
// 포인트를 이용하여, 메모리 주소값과 주소를 출력하시오.
#include <stdio.h>
int main()
{
//char word[30] = "hello"; // 문자열의 저장방식을 보기 위해 문자열 선언과 대입.
//int A = 0xabcdef88; // 스택구조상 메모리의 흐름을 보기위해 변수 선언과 대입.
int i_num = 0xAA; // 알아보기 쉽도록 16진수로 값을 넣어둔다.
int i_cnt; // 기본적인 for 문을 위한 카운터 변수.
int i_loop;
unsigned char *ucp = (unsigned char *)&i_num; // 가르키는 선언 값에 따라 올바르게 타입을 캐 스팅.
printf("-------------------------------------------------------------------------------------------\n" "Address ");
// 안내 주소를 00부터 0F까지 출력 시작.
for(i_cnt = 0;i_cnt <= 15;++i_cnt)
{
printf("%02X ", i_cnt);
}
// 안내 주소 출력 끝.
printf(" ASCII\n");
// 주소와 메모리 출력 시작.
for(i_loop = 0; i_loop <= 10;++i_loop) // i_loop 값의 변경으로 몇줄을 뽑을지 정할 수 있다.
{
printf("%08X ", ucp); // 주소 출력.
for(i_cnt = 0;i_cnt <= 15;++i_cnt) // 저장된 값을 16진수로 두 글자씩만 출력하고 .
{
printf("%02X ", *(ucp + i_cnt));
}
// ASCII 문자를 출력 시작.
for(i_cnt = 0;i_cnt <= 15;++i_cnt)
{
if(' ' <= *((signed char*)ucp + i_cnt)) // ASCII 코드 출력시 입력문자가 있을 경우 도트를 출력한다.
{ // 그 외 아스키문자중 제어문자의 마지막인 스페이스보다
printf("%c", *(ucp + i_cnt));
}
else
{
putchar('.');
}
}
printf("\n");
// ASCII 문자를 출력 끝.
ucp = ucp + 16; // 다음 줄의 메모리 주소를 계산후 대입.
}
return 0;
}
</pre>
<pre>
// 처음 선언되는 변수의 주소값을 기준으로 16 x 10의 16진수 메모리 맵을 출력한다.
// 포인터 변수의 주소 연산과 포인터 변수가 가리키는 값의 주소를 출력하는 것이 목적이다.
// 보기 좋은 화면을 위해 기준이 되는 변수의 마지막 1바이트 값을 가이드 주소로 출력되게 했다.
// 간단한 파일 출력을 동시에 수행한다. memory_status.txt 라는 파일을 만들어 결과를 저장한다.
//
// 주석을 명료하며 되도록이면 다른 사람이 보고 이해하기 쉽도록 적었다.
// 2012년 5월 11일.
#include <stdio.h>
int main()
{
int i_loop;
int i_num = 0xABCDEF88;
int i_cnt;
FILE *fpout; // 파일 포인터 변수 선언.
unsigned char *c_num_ptr = (unsigned char *) &i_num;
fpout = fopen("memory_status.txt", "w"); // fpout 변수에 텍스트파일을 쓰기가 가능하게 불러온다.
// 가이드 문구 시작.
printf("---------------------------------------------------------------------------------\n"
" Address ");
// 주소 마지막 바이트 출력 시작 : 불러들인 주소의 마지막 한 바이트를 알아보기 쉽게 띄워준다.
for(i_cnt = 0;i_cnt <= 15;++i_cnt)
{
printf("%02X ", ((unsigned char)c_num_ptr + i_cnt));
//fprintf(fpout, "%02X ",((unsigned char)c_num_ptr + i_cnt));
}
// 주소 마지막 바이트 출력 끝.
printf(" ASCII CODE \n");
//fprintf(fpout, "\n", i_num);
// 몸체 시작. : 주소와 해당 주소의 실제값을 1 바이트 단위로 출력, 아스키 코드 표시.
for(i_loop = 0;i_loop <= 10;++i_loop) // 몇 줄의 주소를 띄울 것인가를 i_loop의 비교값으로 결정.
{
printf("%08x ", c_num_ptr); // 주소 출력
fprintf(fpout, "%08x ", c_num_ptr); // 텍스트 파일 출력.
// 1바이트씩 주소 값을 출력 시작. :
for(i_cnt = 0;i_cnt <= 15;++i_cnt)
{
printf("%02x ", *(c_num_ptr + i_cnt));
fprintf(fpout, "%02x ", *(c_num_ptr + i_cnt)); // 텍스트 파일 출력.
}
// 1바이트씩 주소 값을 출력 끝. :
// 값에 대한 아스키 코드 출력 시작.
for(i_cnt = 0;i_cnt <= 15;++i_cnt)
{
if(' ' < *(((signed char *)c_num_ptr) + i_cnt)) // 제어문자 스페이스의 십진수 값은 32.
{ // 이 값보다 출력 값이 크면 해당 아스키를 뿌리는데 이때
printf("%c", *(c_num_ptr + i_cnt)); // 제대로 표현할 확장 아스키를 걸러주기 위해 signed char 캐스팅.
fprintf(fpout, "%c", *(c_num_ptr + i_cnt)); // 텍스트 파일 출력.
}
else
{
putchar('.'); // 아스키값이 32 미만이거나 127 이상일 경우에는 점(도트)를 찍어준다.
fprintf(fpout,"."); // 텍스트 파일 출력.
}
}
printf("\n"); // 한줄이 끝나고 개행(줄바꿈)
fprintf(fpout, "\n"); // 텍스트 파일 출력.
c_num_ptr = c_num_ptr + 16; // 다음 줄의 올바른 주소값은 위에서 16바이트를 출력했으니 다음줄은 기준이 되고 있는 첫바이트> 보다 16이 많다.
}
fclose(fpout); // 파일을 닫아준다.
return 0;
</pre>
터미널에서 어떤 프로그램 실행하다 죽거나 취소했을때 터미널이 병신이 되면?
#stty sane
'Application > C/C++' 카테고리의 다른 글
2015년 3월 22일 과제 (0) | 2015.03.29 |
---|---|
QtNetwork를 사용하려면 (0) | 2014.10.23 |
객체지향의 이해 (0) | 2014.04.04 |
Source Insight 3.5 (0) | 2014.02.17 |
배열 초기화 (1) | 2013.08.17 |
- Total
- Today
- Yesterday
- 야마꼬툰
- 나비효과
- 짤방 및 아이콘
- USB Lecture
- Tech News
- Embedded System
- 막장로그
- Mabinogi
- BadCode
- win32
- C#
- diary
- humor
- Linux
- Reverse Engineering
- cartoon
- 프리랜서로 살아남는 법
- Network Inspector
- network
- Web Programming
- Assembly
- wallpaper
- 3D Engine
- medical
- Information Processor
- WDB
- console
- Battle
- Life News
- Military
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |