锘??xml version="1.0" encoding="utf-8" standalone="yes"?>婷婷五月深深久久精品,久久综合精品国产一区二区三区,欧美日韩中文字幕久久久不卡http://m.shnenglu.com/sgq116300/category/5548.htmlSun Guoqing鐨凚logzh-cnTue, 20 May 2008 04:07:16 GMTTue, 20 May 2008 04:07:16 GMT60鍐呮牳printf婧愪唬鐮佸垎鏋? http://m.shnenglu.com/sgq116300/articles/36573.htmlsunGuoqinsunGuoqinWed, 14 Nov 2007 04:13:00 GMThttp://m.shnenglu.com/sgq116300/articles/36573.htmlhttp://m.shnenglu.com/sgq116300/comments/36573.htmlhttp://m.shnenglu.com/sgq116300/articles/36573.html#Feedback0http://m.shnenglu.com/sgq116300/comments/commentRss/36573.htmlhttp://m.shnenglu.com/sgq116300/services/trackbacks/36573.html

鎵撳紑Source Insight鏉ラ槄璇籈duOS鐨勬簮浠g爜,鎴戜滑鍦╯tdio.c閲屾壘鍒頒簡printf鐨勫疄鐜頒唬鐮?棣栧厛鐪嬬湅瀵筽rintf鐨勫畾涔?
[code]
int printf (const char *cntrl_string, ...)
[/code]
絎竴涓弬鏁癱ntrl_string鏄帶鍒跺瓧絎︿覆,涔熷氨鏄鉤甯告垜浠啓鍏?d,%f鐨勫湴鏂?绱ф帴鐫鍚庨潰鏄竴涓彉闀垮弬鏁?

鐪嬬湅鍑芥暟澶撮儴鐨勫畾涔?

  [code]int pos = 0, cnt_printed_chars = 0, i;
  unsigned char* chptr;
  va_list ap;[/code]
椹笂鏅?闄や簡ap鎴戜滑鍙互椹笂鍒ゆ柇鍑烘潵鏄敤鏉ヨ鍙栧彉闀垮弬鏁扮殑,i鐢ㄤ簬寰幆鍙橀噺.鍏朵粬鍙橀噺閮戒笉鐭ラ亾鏄庝箞鍥炰簨.涓嶈鐫鎬?鎴戜滑杈圭湅浠g爜杈瑰垎鏋?浠g爜鐨勭涓琛屽繀鐒舵槸

[code]va_start (ap, cntrl_string);[/code]
鐢ㄦ潵鍒濆鍖栧彉闀垮弬鏁?

鎺ヤ笅鏉ユ槸涓涓獁hile寰幆

[code]while (cntrl_string[pos]) {
...
}[/code]

緇撴潫鏉′歡鏄痗ntrl_string[pos]涓篘ULL,鏄劇劧榪欎釜寰幆鏄敤鏉ラ亶鍘嗘暣涓帶鍒跺瓧絎︿覆鐨?鑷劧pos灝辨槸褰撳墠閬嶅巻鍒扮殑浣嶇疆浜?榪涘叆寰幆棣栧厛闂叆瑙嗙嚎鐨勬槸

[code] if (cntrl_string[pos] == '%') {
      pos++;
      ...
 } [/code]

寮闂ㄨ灞?涓婃潵灝卞綋鍓嶅瓧絎︽槸鍚﹀姙鏂槸鍚?.涓鐚滃氨鐭ラ亾濡傛灉鎴愮珛pos++椹笂鍙栧嚭涓嬩竴涓瓧絎﹀湪d,f,l絳夌瓑涔嬮棿榪涜鍒ゆ柇.寰涓嬩竴鐪?鏋滅湡涓嶅嚭鎵鏂?

[code]switch (cntrl_string[pos]) {
    case 'c':
...
    case 's':
...
    case 'i':
...
    case 'd':
...
    case 'u':
...[/code]

鐢ㄤ笂switch-case浜? 蹇熸祻瑙堜竴涓嬩笅闈㈢殑浠g爜.

棣栧厛鐪嬬湅case 'c'鐨勯儴鍒?/p>

[code]case 'c':
 putchar (va_arg (ap, unsigned char));
 cnt_printed_chars++;
 break;[/code]

%c琛ㄧず浠呬粎杈撳嚭涓涓瓧絎?鍥犳鍏堥氳繃va_arg榪涜鍙傛暟鐨勭被鍨嬭漿鎹?涔嬪悗鐢╬utchar[1]杈撳嚭鍒板睆騫曚笂鍘?涔嬪悗鏄?br>cnt_printed_chars++,閫氳繃榪欏彞鎴戜滑灝卞彲浠ュ垽鏂嚭cnt_printed_chars浣跨敤鏉ヨ〃紺?宸茬粡琚玴rintf杈撳嚭鐨勫瓧絎︿釜鏁扮殑.

鍐嶆潵鐪嬬湅 case 's':
[code]      case 's':
 chptr = va_arg (ap, unsigned char*);
 i = 0;
 while (chptr [i]) {
   cnt_printed_chars++;
   putchar (chptr [i++]);
 }
 break;[/code]鍜宑ase 'c',鍚屽嚭涓杈?cnt_printed_chars++鏀懼湪浜嗗驚鐜唴,涔熻瘉鏄庝簡鍒氭墠鎻愬埌鐨勪粬鐨勪綔鐢?鍙﹀鎴戜滑涔熺湅鍒頒簡cnptr鏄敤鏉ュ湪澶勭悊瀛楃涓叉椂鐨勪綅緗寚閽?鍒版涓烘,鎴戜滑娓呮鐨勬墍鏈夊彉閲忕殑鐢ㄩ?鍓嶉斿彉寰楁洿鍔犲厜鏄庝簡.

鎺ヤ笅鏉?
[code]// PartI
      case 'i':
      case 'd':
 cnt_printed_chars += printInt (va_arg (ap, int));
 break;
      case 'u':
 cnt_printed_chars += printUnsignedInt (va_arg (ap, unsigned int));
 break;
      case 'x':
 cnt_printed_chars += printHexa (va_arg (ap, unsigned int), 'x');
 break;
      case 'X':
 cnt_printed_chars += printHexa (va_arg (ap, unsigned int), 'X');
 break;
      case 'o':
 cnt_printed_chars += printOctal (va_arg (ap, unsigned int));
 break;
// Part II
 case 'p':
 putchar ('0');
 putchar ('x');
 cnt_printed_chars += 2; /* of '0x' */
 cnt_printed_chars += printHexa (va_arg (ap, unsigned int), 'x');
 break;
      case '#':
 pos++;
 switch (cntrl_string[pos]) {
 case 'x':
   putchar ('0');
   putchar ('x');
   cnt_printed_chars += 2; /* of '0x' */
   cnt_printed_chars += printHexa (va_arg (ap, unsigned int), 'x');
   break;
 case 'X':
   putchar ('0');
   putchar ('X');
   cnt_printed_chars += 2; /* of '0X' */
   cnt_printed_chars += printHexa (va_arg (ap, unsigned int), 'X');
   break;
 case 'o':
   putchar ('0');
   cnt_printed_chars++;
   cnt_printed_chars += printOctal (va_arg (ap, unsigned int));
   break;[/code]
娉ㄦ剰瑙傚療涓涓?PartII鐨勪唬鐮佸叾瀹炲氨鏄瘮PartI鐨勪唬鐮佸涓涓牱寮?鍦?6榪涘埗鏁版垨鍏繘鍒跺墠鍔犲叆0x鎴栨槸o,絳夌瓑.鍥犳榪欓噷灝卞彧鍒嗘瀽涓涓婸artI鍜?

鍏跺疄浠旂粏鐪嬬湅PartI鐨勪釜鏉ase,涔熷氨鏄妸鍙傛暟鍒嗗彂鍒頒簡鏇村叿浣撶殑鍑芥暟鐢ㄤ簬鏄劇ず,鐒跺悗浠ヨ繑鍥炲肩殑褰㈠紡榪斿洖杈撳嚭涓暟.瀵逛簬榪欎簺鍑芥暟灝變笉鍏蜂綋鍒嗘瀽浜?鎴戜滑鍏堟潵鐪嬬湅涓浜涘杽鍚庡鐞?

鍏堢湅case鐨刣efault澶勭悊.
[code]default:
 putchar ((unsigned char) cntrl_string[pos]);
 cnt_printed_chars++;[/code]灝辨槸鐩存帴杈撳嚭cntrl_string閲?鍙峰悗闈㈢殑鏈煡瀛楃.搴旇鏄竴縐嶅閿欒璁″鐞?

鍐嶇湅鐪媔f (cntrl_string[pos] == '%')鐨別lse閮ㄥ垎
     
[code]else {
      putchar ((unsigned char) cntrl_string[pos]);
      cnt_printed_chars++;
      pos++;
 }[/code]
濡傛灉涓嶆槸%寮澶寸殑,閭d箞鐩存帴杈撳嚭榪欎釜瀛楃.

鏈鍚庡嚱鏁拌繑鍥炲墠
  [code]va_end (ap);
  return cnt_printed_chars;[/code]va_end澶勭悊鍙橀暱鍙傛暟鐨勫杽鍚庡伐浣?騫惰繑鍥炶緭鍑虹殑瀛楃涓暟.

鍦ㄦ渶鍚庢垜浠湁蹇呰璋堣皥putChar鍑芥暟浠ュ強(qiáng)鍩烘湰杈撳嚭鐨勫熀紜鍑芥暟printChar,鍏堟潵鐪嬬湅putChar

[code]int putchar (int c) {
  switch ((unsigned char) c) {
  case '\n' :
    newLine ();
    break;
  case '\r' :
    carriageReturn ();
    break;
  case '\f' :
    clearScreen ();
    break;
  case '\t' :
    printChar (32); printChar (32); /* 32 = space */
    printChar (32); printChar (32);
    printChar (32); printChar (32);
    printChar (32); printChar (32);
    break;
  case '\b':
    backspace ();
    break;
  case '\a':
    beep ();
    break;
  default :
    printChar ((unsigned char) c);
  }
  return c;
}[/code]
閫? 瑙堜竴涓?涔熸槸switch-case涓轟富浣撶殑.涓昏鏄敤鏉ュ簲瀵逛竴浜涚壒孌婂瓧絎?濡俓n,\r,....榪欓噷闇瑕佹彁涓涓?鍏充簬\t鐨勭悊瑙?鏈変簺浜鴻涓篭t灝辨槸 8涓猻pace,鏈変簺浜哄垯璁や負(fù),灞忓箷鍒嗕負(fù)10澶у垪(姣忎釜澶у垪8涓皬鍒楁誨叡80鍒?.涓涓猏t灝辮煩鍒頒笅涓涓ぇ鍒楄緭鍑?涔熷氨鏄涓嶇浣犵幇鍦ㄥ疄鍦ㄥ睆騫曠殑絎? 1,2,3,4,5,6,7浣嶇疆杈撳嚭瀛楃,鍙涓涓猏t閮藉湪絎?涓綅緗紑濮嬭緭鍑? VS.NET涓氨鏄敤鐨勮繖縐嶇悊瑙?鍥犳濡傛灉鎸夌収榪欎釜鐞嗚В鐨勮瘽,\t鐨勫疄鐜板彲浠ヨ繖鏍?/p>

[code]int currentX = ((currentX % 10) + 1) * 8;[/code]

鐒跺悗鍦╟urrentX浣嶇疆杈撳嚭.

鎺ヤ笅鏉ョ湅printChar涔熷氨鏄緭鍑洪儴鍒嗘渶浣庡眰鐨勬搷浣滃挴

[code]void printChar (const byte ch) {
  *(word *)(VIDEO + y * 160 + x * 2) = ch | (fill_color << 8);
  x++;
  if (x >= WIDTH)
    newLine ();
  setVideoCursor (y, x);
}[/code] 榪欓噷VIDEO琛ㄧず鏄懼瓨鍦板潃涔熷氨鏄?xB8000.閫氳繃 y * 160 + x 灞忓箷(x,y)鍧愭爣鍦ㄦ樉瀛樹腑鐨勪綅緗?榪欓噷闇瑕佺煡閬?涓涓瓧絎︽樉紺洪渶瑕佷袱涓瓧鑺?涓涓槸ASCII鐮?絎簩涓槸瀛楃灞炴т唬鐮佷篃灝辨槸棰滆壊浠g爜.鍥犳鎵嶅繀欏? y * 80 * 2 + x = y * 160 + x.閭d箞ch | (fill_color << 8)涔熻嚜鐒跺氨鏄啓鍏ュ瓧絎﹀強(qiáng)灞炴т唬鐮佺敤鐨勪簡.姣忓啓涓涓瓧絎﹀厜鏍囦綅緗姞1,濡傛灉澶т簬灞忓箷瀹藉害WIDTH灝辨崲琛?鏈鍚庨氳繃setVideoCursor璁劇疆鏂扮殑 鍏夋爣浣嶇疆.瀹屾垚浜嗘暣涓猵rintChar榪囩▼.



sunGuoqin 2007-11-14 12:13 鍙戣〃璇勮
]]>
一本色道久久88精品综合| 国产精品伦理久久久久久| 久久精品中文无码资源站| 久久这里只有精品首页| 久久精品蜜芽亚洲国产AV| 久久国产综合精品五月天| 久久亚洲国产成人影院网站| 午夜不卡久久精品无码免费| 91亚洲国产成人久久精品| 97精品伊人久久大香线蕉| 成人久久精品一区二区三区| 日本加勒比久久精品| 久久综合狠狠综合久久激情 | 久久99亚洲综合精品首页| 中文字幕久久精品| 久久免费美女视频| 亚洲精品乱码久久久久久按摩| 国产亚洲美女精品久久久| 国产成人精品白浆久久69| 亚洲香蕉网久久综合影视 | 久久精品国产亚洲AV麻豆网站| 久久久精品久久久久久| 国产精品福利一区二区久久| 久久频这里精品99香蕉久| 久久久久久极精品久久久| 99久久精品九九亚洲精品| 久久se精品一区二区| 国产精品禁18久久久夂久| 精品久久久久久无码专区| 日韩精品久久无码人妻中文字幕 | 久久久久AV综合网成人| 久久无码AV一区二区三区| 亚洲精品tv久久久久久久久久| 精品无码人妻久久久久久| 精品99久久aaa一级毛片| 91久久九九无码成人网站| 国产A级毛片久久久精品毛片| 99久久婷婷国产综合亚洲| avtt天堂网久久精品| 久久青青草原国产精品免费| 久久综合九色综合欧美狠狠|