2006년 10월 전체 글 목록
2006/10/30   역시 밖이 좋구나..
2006/10/29   [버그킬러] printf 와 scanf 에서의 소수 출력할 때.
2006/10/29   [SQLite] 05. 출력, 입력하는 모양 및 포멧 옵션 조절
역시 밖이 좋구나..
아직 나의 짧은 머리가 많이 자라지 않았다. 어중간한 머리 길이를 유지하고 있다.  

  다시 한 번 느끼지만 역시 밖이 좋다. 2년 이라는 시간은 누구의 말대로 보험이라고 생각한다. 내가 2년을 투자함으로써 남은 인생을 편하게 느끼게 해주는 보험. 역시 이 말도 2년이라는 시간이 지났기 때문에 할 수 있는 것 아닌가?

내가 이렇게 있지만 남아 있는 누군가는 내 일을 대신 하고 있겠지. 내가 "제발 도움이 되라!" 라고 애타게 사정했던 내 조수는 잘 하고 있겠지. 내 조수도 이렇게 나와 자유를 느낄 날이 있겠지. 어쩌면 내 사수도 이렇게 자유를 만끽하면서 나를 불쌍하게 생각했을지도 몰라? 걱정마라. 시간은 흐른다. 안 올것만 같은 시간은 결국은 흐르고 만다.
by 한밀 | 2006/10/30 22:50 | 오늘 하루 | 트랙백
[버그킬러] printf 와 scanf 에서의 소수 출력할 때.
printf 와 scanf 를 사용할 때, 소수에 대해서 무조건 %f 를 사용한다고 알고 있었는데, 책을 읽어보니 다르내요.

%f : float , printf 에만 가능
%lf : double , scanf 에사만 가능
%Lf : long double, 모든 컴파일러에서 사용가능한 것은 아니다.

%f 서식은 double과 float 를 출력할 수 있는데, C의 인수 전달에 내장된 자동 전환 때문에 가능한 일이다.

라고 나와 있군요.

요즘 시대에 printf 와 scanf 를 그대로 사용할 일은 없지면 fprinf 나 sscanf 같은 약간 변형된 형태를 사용할 때 조심해야 할 것 같군요.
by 한밀 | 2006/10/29 23:43 | 프로그래밍 | 트랙백
[SQLite] 05. 출력, 입력하는 모양 및 포멧 옵션 조절
MySQL 을 사용하다가 SQLite 에서 들어있는 데이터를 확인할 때(select * from 문 이용할 때) 너무 단순하게 출력해서 이상하다가 생각하는 사람이 있을 것 같다. 그래서 SQLite 에서 이런 출력 모양을 예쁘게 만들어 주는 옵션들이 존재한다. 또 이 옵션들은 다음에 나오는 .import FILE TABLE 을 이용할 때 처럼 읽어 들일 때도 사용된다.

여기 부분은 당연히 표준 SQL 문이 아니다. 그래서 점(.) 으로 시작하고 세미코론(;) 을 끝에 찍으면 안된다. 이 내용은 SQLite 홈페이지 를 참조했다.


앞에서 만든 테이블을 기본으로 삼기로 하자. 우선 sqlite.exe 프로그래을 실행시키고, 다음처럼 입력하자. 약간 귀찮다면 그냥 복사 해서 넣자. (복사해서 넣을 때 sqlite> 이 다음에 있는 내용들만 내가 입력한 것들이다. )
====================================================================
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
====================================================================

이제 pet 이라는 테이블에 하나의 데이터만 들어가 있는 상태이다. 앞에서 설명했듯이 pet 안에 있는 모든 데이터를 보기 위해서는 select * from tbl1; 을 이용한다.
====================================================================
sqlite> select * from tbl1;
hello!|10
goodbye|20
====================================================================

출력해준 내용이 정보도 없고 그냥 있는 데이터만 보여준다. MySQL 을 사용했던 사람은 다음과 같은 출력을 원할 것이다.
+----------+-----+
| one | two |
+----------+-----+
| hello | 10 |
|goodbye | 20 |
+----------+----+

콘솔창이 한계가 있기 때문에 완벽하진 않더라도 저 정도면 보기 좋은 상태이다.

SQLite 에서 .help 를 입력하면 SQLite 표준 문은 아니지만 도움이 되는 많은 명령어가 있다. 이 중 .mode 대해 다음과 같은 설명이 있다.

.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)

insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values

column 이 가장 비슷하게 보여준다. (이 블로그에서는 잘 보이지 않는데 콘솔창에서는 정렬되어 보인다.)
====================================================================
sqlite> .mode column
sqlite> select * from tbl1;
hello! 10
goodbye 20
====================================================================

여기에 .header on 을 하면(반대는 .head off 이고 이 값이 디폴트이다.) 조금 더 보기 좋다.
====================================================================
sqlite> .header on
sqlite> select * from tbl1;
one two
---------- ----------
hello! 10
goodbye 20
====================================================================
보다시피 위에 one, two 라는 헤더가 붙여서 보인다.

내가 이것에 대해 설명한 것은 단순이 보기 좋게 만들려는 것은 아니다. 여기에 있는 옵션들은 출력은 반대로 입력할 때(.import 를 이용할 때)도 적용되기 때문이다.

입력과 가장 관련된 부분은 .mode list 문이다. 설명(.help)을 읽어보면 .separator 로 구분자를 설정된 문자로 구분해준다고 적혀있다. .mode 에서 기본 값은 list 이다. 그리고 .separator 의 기본값은 "|"(pipe 기호)이다. 많이 사용하는 기호로 탭이 있다. 탭을 사용할려면 "\t" 을 이용하면 된다. 왜 이건 내가 설명하는지는 다음 강의를 듣으면 이해가 될 것이다.
by 한밀 | 2006/10/29 22:09 | 프로젝트 | 트랙백
<< 이전 다음 >>