锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品乱码久久久久久中文字幕,亚洲中文字幕无码一久久区,久久免费精品视频http://www.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://www.shnenglu.com/sgq116300/articles/36573.htmlsunGuoqinsunGuoqinWed, 14 Nov 2007 04:13:00 GMThttp://www.shnenglu.com/sgq116300/articles/36573.htmlhttp://www.shnenglu.com/sgq116300/comments/36573.htmlhttp://www.shnenglu.com/sgq116300/articles/36573.html#Feedback0http://www.shnenglu.com/sgq116300/comments/commentRss/36573.htmlhttp://www.shnenglu.com/sgq116300/services/trackbacks/36573.html

鎵撳紑Source Insight鏉ラ槄璇籈duOS鐨勬簮浠g爜,鎴戜滑鍦╯tdio.c閲屾壘鍒頒簡(jiǎn)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]
椹笂鏅?闄や簡(jiǎn)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++鏀懼湪浜?jiǎn)弩@鐜唴,涔熻瘉鏄庝簡(jiǎn)鍒氭墠鎻愬埌鐨勪粬鐨勪綔鐢?鍙﹀鎴戜滑涔熺湅鍒頒簡(jiǎn)cnptr鏄敤鏉ュ湪澶勭悊瀛楃涓叉椂鐨勪綅緗寚閽?鍒版涓烘,鎴戜滑娓呮鐨勬墍鏈夊彉閲忕殑鐢ㄩ?鍓嶉斿彉寰楁洿鍔犲厜鏄庝簡(jiǎn).

鎺ヤ笅鏉?
[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,涔熷氨鏄妸鍙傛暟鍒嗗彂鍒頒簡(jiǎn)鏇村叿浣撶殑鍑芥暟鐢ㄤ簬鏄劇ず,鐒跺悗浠ヨ繑鍥炲肩殑褰㈠紡榪斿洖杈撳嚭涓暟.瀵逛簬榪欎簺鍑芥暟灝變笉鍏蜂綋鍒嗘瀽浜?鎴戜滑鍏堟潵鐪嬬湅涓浜涘杽鍚庡鐞?

鍏堢湅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)鍧愭爣鍦ㄦ樉瀛樹(shù)腑鐨勪綅緗?榪欓噷闇瑕佺煡閬?涓涓瓧絎︽樉紺洪渶瑕佷袱涓瓧鑺?涓涓槸ASCII鐮?絎簩涓槸瀛楃灞炴т唬鐮佷篃灝辨槸棰滆壊浠g爜.鍥犳鎵嶅繀欏? y * 80 * 2 + x = y * 160 + x.閭d箞ch | (fill_color << 8)涔熻嚜鐒跺氨鏄啓鍏ュ瓧絎﹀強(qiáng)灞炴т唬鐮佺敤鐨勪簡(jiǎn).姣忓啓涓涓瓧絎﹀厜鏍囦綅緗姞1,濡傛灉澶т簬灞忓箷瀹藉害WIDTH灝辨崲琛?鏈鍚庨氳繃setVideoCursor璁劇疆鏂扮殑 鍏夋爣浣嶇疆.瀹屾垚浜?jiǎn)鏁翠釜printChar榪囩▼.



sunGuoqin 2007-11-14 12:13 鍙戣〃璇勮
]]>
久久久国产精品| 国产成人久久精品激情| 一本色道久久88综合日韩精品| 久久九九全国免费| 国产精品熟女福利久久AV| 久久e热在这里只有国产中文精品99 | 亚洲国产精品无码久久久秋霞2 | 色综合久久天天综合| 亚洲国产成人久久综合一| 久久久久久精品免费免费自慰| 婷婷久久久亚洲欧洲日产国码AV | 国产99久久久国产精免费| 久久人妻少妇嫩草AV蜜桃| 中文字幕久久波多野结衣av| 国产精品一区二区久久精品| 亚洲国产天堂久久久久久| 国产午夜久久影院| 色婷婷久久综合中文久久蜜桃av| 欧美精品丝袜久久久中文字幕| 国产美女久久精品香蕉69| 开心久久婷婷综合中文字幕| 国产精品伊人久久伊人电影| 好久久免费视频高清| 国内高清久久久久久| 精品久久久久久无码中文野结衣| 久久精品国产亚洲一区二区| 一个色综合久久| 亚洲精品NV久久久久久久久久 | 99久久婷婷国产综合精品草原 | 久久精品国产一区二区三区不卡| 久久96国产精品久久久| 四虎国产精品成人免费久久| 久久国产精品偷99| 久久综合一区二区无码| 99久久无码一区人妻| www.久久99| 韩国免费A级毛片久久| 久久久av波多野一区二区| 亚洲国产精品无码久久SM| 亚洲综合熟女久久久30p| 久久99精品国产麻豆|