'2009/10'에 해당되는 글 9건

  1. 2009.10.17 C# 기반 배경이 투명한 컨트롤 사용
  2. 2009.10.15 printf 소스
  3. 2009.10.15 itoa 구현
  4. 2009.10.14 오픈카라 해봐야...
  5. 2009.10.14 투스카니 GTS 슈퍼형
  6. 2009.10.14 SLR 클럽 1면!!
  7. 2009.10.14 M4650
  8. 2009.10.14 세븐이랑 100%??
  9. 2009.10.14 강철의 연금술사 리메이크 26화의 한 장면 1
Programming/Windows Mobile2009. 10. 17. 14:01
Posted by skensita
Programming/C2009. 10. 15. 00:23
#define putchar(c) outbyte(c)   
static void printchar(char **str, int c)   
{   
 extern int putchar(int c);   
 if (str) {   
  **str = c;   
  ++(*str);   
 }   
 else (void)putchar(c);   
}   
#define PAD_RIGHT 1   
#define PAD_ZERO 2   
static int prints(char **out, const char *string, int width, int pad)   
{   
 register int pc = 0, padchar = ' ';   
 if (width > 0) {   
  register int len = 0;   
  register const char *ptr;   
  for (ptr = string; *ptr; ++ptr) ++len;   
  if (len >= width) width = 0;   
  else width -= len;   
  if (pad & PAD_ZERO) padchar = '0';   
 }   
 if (!(pad & PAD_RIGHT)) {   
  for ( ; width > 0; --width) {   
   printchar (out, padchar);   
   ++pc;   
  }   
 }   
 for ( ; *string ; ++string) {   
  printchar (out, *string);   
  ++pc;   
 }   
 for ( ; width > 0; --width) {   
  printchar (out, padchar);   
  ++pc;   
 }   
 return pc;   
}   
/* the following should be enough for 32 bit int */  
#define PRINT_BUF_LEN 12   
static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)   
{   
 char print_buf[PRINT_BUF_LEN];   
 register char *s;   
 register int t, neg = 0, pc = 0;   
 register unsigned int u = i;   
 if (i == 0) {   
  print_buf[0] = '0';   
  print_buf[1] = '\0';   
  return prints (out, print_buf, width, pad);   
 }   
 if (sg && b == 10 && i < 0) {   
  neg = 1;   
  u = -i;   
 }   
 s = print_buf + PRINT_BUF_LEN-1;   
 *s = '\0';   
 while (u) {   
  t = u % b;   
  if( t >= 10 )   
   t += letbase - '0' - 10;   
  *--s = t + '0';   
  u /= b;   
 }   
 if (neg) {   
  if( width && (pad & PAD_ZERO) ) {   
   printchar (out, '-');   
   ++pc;   
   --width;   
  }   
  else {   
   *--s = '-';   
  }   
 }   
 return pc + prints (out, s, width, pad);   
}   
static int print(char **out, int *varg)   
{   
 register int width, pad;   
 register int pc = 0;   
 register char *format = (char *)(*varg++);   
 char scr[2];   
 for (; *format != 0; ++format) {   
  if (*format == '%') {   
   ++format;   
   width = pad = 0;   
   if (*format == '\0') break;   
   if (*format == '%') goto out;   
   if (*format == '-') {   
    ++format;   
    pad = PAD_RIGHT;   
   }   
   while (*format == '0') {   
    ++format;   
    pad |= PAD_ZERO;   
   }   
   for ( ; *format >= '0' && *format <= '9'; ++format) {   
    width *= 10;   
    width += *format - '0';   
   }   
   if( *format == 's' ) {   
    register char *s = *((char **)varg++);   
    pc += prints (out, s?s:"(null)", width, pad);   
    continue;   
   }   
   if( *format == 'd' ) {   
    pc += printi (out, *varg++, 10, 1, width, pad, 'a');   
    continue;   
   }   
   if( *format == 'x' ) {   
    pc += printi (out, *varg++, 16, 0, width, pad, 'a');   
    continue;   
   }   
   if( *format == 'X' ) {   
    pc += printi (out, *varg++, 16, 0, width, pad, 'A');   
    continue;   
   }   
   if( *format == 'u' ) {   
    pc += printi (out, *varg++, 10, 0, width, pad, 'a');   
    continue;   
   }   
   if( *format == 'c' ) {   
    /* char are converted to int then pushed on the stack */  
    scr[0] = *varg++;   
    scr[1] = '\0';   
    pc += prints (out, scr, width, pad);   
    continue;   
   }   
  }   
  else {   
  out:   
   printchar (out, *format);   
   ++pc;   
  }   
 }   
 if (out) **out = '\0';   
 return pc;   
}   
/* assuming sizeof(void *) == sizeof(int) */  
int printf(const char *format, ...)   
{   
 register int *varg = (int *)(&format);   
 return print(0, varg);   
}   
int sprintf(char *out, const char *format, ...)   
{   
 register int *varg = (int *)(&format);   
 return print(&out, varg);   
}   
#ifdef TEST_PRINTF   
int main(void)   
{   
 char *ptr = "Hello world!";   
 char *np = 0;   
 int i = 5;   
 unsigned int bs = sizeof(int)*8;   
 int mi;   
 char buf[80];   
 mi = (1 << (bs-1)) + 1;   
 printf("%s\n", ptr);   
 printf("printf test\n");   
 printf("%s is null pointer\n", np);   
 printf("%d = 5\n", i);   
 printf("%d = - max int\n", mi);   
 printf("char %c = 'a'\n", 'a');   
 printf("hex %x = ff\n", 0xff);   
 printf("hex %02x = 00\n", 0);   
 printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);   
 printf("%d %s(s)%", 0, "message");   
 printf("\n");   
 printf("%d %s(s) with %%\n", 0, "message");   
 sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);   
 sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);   
 sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);   
 sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);   
 sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);   
 sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);   
 sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);   
 sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);   
 return 0;   
}   

printf의 소스... 천천히 봐볼까나...
Posted by skensita
Programming/C2009. 10. 15. 00:05
char * ltoa (long val, char *buf, unsigned radix)
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp;      /* temp char */
unsigned digval; /* value of digit */

p = buf;

if (radix == 10 && val < 0) {
   /* negative, so output '-' and negate */
   *p++ = '-';
   val = (unsigned long)(-(long)val);
}

firstdig = p;   /* save pointer to first digit */

do {
   digval = (unsigned) (val % radix);
   val /= radix;       /* get next digit */

   /* convert to ascii and store */
   if (digval > 9)
*p++ = (char) (digval - 10 + 'a');  /* a letter */
   else
*p++ = (char) (digval + '0');       /* a digit */
} while (val > 0);

/* We now have the digit of the number in the buffer, but in reverse
  order.  Thus we reverse them now. */

*p-- = '\\0';    /* terminate string; p points to last digit */

do {
   temp = *p;
   *p = *firstdig;
   *firstdig = temp;   /* swap *p and *firstdig */
   --p;
   ++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */

return buf;
}

출처 : http://cpueblo.com/programming/cpp/contents/99.html
Posted by skensita
자동차2009. 10. 14. 00:39


오픈카라 해봐야... ㅋㅋ

사실 참 좋다...

오픈에어링을 즐기며 달리는 기분이란~

하지만 단점도 존재!!

여름 햇빛 쨍쨍할때 오픈하면 햇살이 참 뜨겁다... ㅠ_ㅠ

그때는 쫌 참아 주시고

또 문제가 요게 시속 10km 미만에서만 열고 닫기가 된다는것!

무엇이 문제인가.... 오픈을 하고 달리고 있다.... 터널이 보인다.... 나는 달리고 있다.... 못닫는다.... 열고 터널로 진입 -_-;;

오픈카 모는 사람들이 일부러 터널에서 열고 다니는게 아니랍니다 ㅠ_ㅠ

뭐 그래도 엄청난 매력을 가지는것 같다..^^

207CC라 그런지 조금 작다

조만간 307CC로 구입을 해야겠다...
Posted by skensita
자동차2009. 10. 14. 00:36


나의 첫차이자 운전의 즐거움을 느끼게 해준 투스카니!!

연비는 뭐... 대충 1L당 9km정도 나와주는것 같다.

나이 25살에 가진 첫차인 만큼 정도 많이들고 추억도 많았던 나의 첫차...

이제는 내 곁에 없지만 지금이라도 사진 한장을 업로드 해본다!

가끔 그리운 투스카니...
Posted by skensita
Photo2009. 10. 14. 00:31


저기 가운데 보이는 트윈타워 사진!!

가문의 영광!!
Posted by skensita
전자제품/PDA2009. 10. 14. 00:29

요즘 일정관리에 힘겨움을 느끼고

핸드폰만으로는 도저히 관리가 안되서

이번에 구입한 M4650

3만원에 저렴하게 좋은놈으로 업어왔다~

일정관리, MP3, 동영상, 전자사전등으로 만족하고 사용중!!

이참에 D2도 팔아버려야 겠다.
Posted by skensita
Photo2009. 10. 14. 00:24

허허... 이건 무엇인고??

뭐... 재밌음.. ㅋㅋ
Posted by skensita
Animation2009. 10. 14. 00:17

 



강철의 연금술사 리메이크 26화의 한장면...

이거 멋있는데??

Posted by skensita