⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printf.c

📁 类unix x86平台的简单操作系统
💻 C
字号:
#include "types.h"#include "stat.h"#include "user.h"static voidputc(int fd, char c){  write(fd, &c, 1);}static voidprintint(int fd, int xx, int base, int sgn){  char buf[16];  char digits[] = "0123456789ABCDEF";  int i = 0, neg = 0;  uint x;  if(sgn && xx < 0){    neg = 1;    x = 0 - xx;  } else {    x = xx;  }  do {    buf[i++] = digits[x % base];  } while((x /= base) != 0);  if(neg)    buf[i++] = '-';  while(--i >= 0)    putc(fd, buf[i]);}// Print to the given fd. Only understands %d, %x, %p, %s.voidprintf(int fd, char *fmt, ...){  int i, state = 0, c;  uint *ap = (uint*)(void*)&fmt + 1;  for(i = 0; fmt[i]; i++){    c = fmt[i] & 0xff;    if(state == 0){      if(c == '%'){        state = '%';      } else {        putc(fd, c);      }    } else if(state == '%'){      if(c == 'd'){        printint(fd, *ap, 10, 1);        ap++;      } else if(c == 'x' || c == 'p'){        printint(fd, *ap, 16, 0);        ap++;      } else if(c == 's'){        char *s = (char*)*ap;        ap++;        while(*s != 0){          putc(fd, *s);          s++;        }      } else if(c == 'c'){        putc(fd, *ap);        ap++;      } else if(c == '%'){        putc(fd, c);      } else {        // Unknown % sequence.  Print it to draw attention.        putc(fd, '%');        putc(fd, c);      }      state = 0;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -