2011년4월13일..for문에서 초기식과 증감식의 변형, gdb(GNU Debugger), 무한반복문, 마인드스톰 자동차 개조
1. 예제3-23
○conio.h는 윈도우에만 있고 getche()는 표준C가 아니니 빼고 getche()대신 표준C의 한 문자를 읽어 들이는 함수인 getchar()를 사용함.
a를 입력하고 엔터를 치면 a가 출력되고 순식간에 다시 입력받고 아무 것도 찍히지 않은채 다음의 입력을 받는다.
○getchar()는 한 문자를 입력하더라도 버퍼에 엔터키가 남아 다음 getchar()에서 엔터키가 읽히므로 버퍼를 지우기 위해 교과서 p.89의 fflush()로 버퍼를 지워주면 되나 아쉽게도 리눅스에선 되지 않았다. 엔터키를 없애기 위해 getchar()를 하나 더 씀.
사용자가 하나의 문자(‘A’)를 입력하려고 getchar()의 경우 마지막에 엔터키를 누르게 된다. 그럼 엔터키까지 버퍼에 들어가게 된다. for문의 조건식에서 문자(‘A’)를 저장하고 형식지정자 %c로 출력한 다음 엔터키가 다음에 쓰이지 않게 한 번 더 읽어 들여 형식지정자 %d로 출력하니 십진수10이 출력 되었다. ASCII표를 보니 LF (line feed)다.
●symbol table
ch는 100번지에 i는 104번지에 있다고 가정하고 그리면,
★사회에 나가 중압감을 이겨내려면 실력이 있어야 한다. (자본주의, 무한 자유경쟁의 세계)
★DOS에서 실행파일이 exe확장자이고 리눅스는 없음.
실행파일 앞에 “./” 넣을 것.
2. 예제 3-24
증감식이 printf()에 있다. 주석으로 for문과 아래의 while문을 비교해보면 같은 결과를 낸다는 것을 알 수 있다.
3. gdb (GNU Debugger)
ⓐ소스코드작성. (2번의 예제3-24사용)
ⓑ컴파일시 -g옵션 추가. # gcc –g –o p3-24 p3-24.c
ⓒ# gdb p3-24
ⓓ(gdb) list 를 쳐서 소스코드 보기. 행 번호 확인.
ⓔ(gdb) break 행번호를 쳐서 브레이크 포인트 지정.
ⓖ(gdb) display 변수명을 쳐서 변수의 값을 스텝마다 확인.
i를 선언하고 초기화를 하지 않아 쓰레기값이 들어가 있다.
ⓗ(gdb) step또는 next를 쳐서 다음 행의 명령문 실행. next는 함수내부로 들어가지 않음.
매 step마다 변수의 값을 확인할 수 있어 사람이 실수를 알 수 있다.
★디비거를 모르면 printf()와 같은 출력함수로 중간중간 값을 확인하면 된다.
●gdb 명령어 정리는 다음 기회에…
3. 무한 반복문
4.마인드스톰 자동차를 불도저로 개조
이러다 월화수목금금금 되는거 아니야…OTL
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년4월15일..포인터복습, 정수와 실수의 바이트 순서(Big/little Endian) (0) | 2011.04.18 |
---|---|
2011년4월14일..다중 제어문, 구구단, 포인터 (0) | 2011.04.15 |
2011년4월12일..마인드스톰 소리발생, 자유과제(초음파레이더를 장착한 원격제어감시 지능형 자동차) (0) | 2011.04.13 |
2011년4월11일..for문, PC정리, VMWare Player로 리눅스 연습, vi editor (0) | 2011.04.11 |
2011년4월7일...symbol table(메모리), 디버깅 변수값확인, 마인드스톰 Tribot light sensor (0) | 2011.04.07 |