printf.c

来自「ADS下的bios工程」· C语言 代码 · 共 114 行

C
114
字号
#include <bios/stdio.h>#include <bios/stdioint.h>#include <bios/timer.h>#include <stdarg.h>extern void ser_write(const char *buf, int nr);extern int  ser_read(char *buf, int nr);extern int  ser_stat(void);extern void clear_timer(int timer) ;extern void set_timer(int timer, int cs) ;extern int lcd_prints(char *, int);struct stdfn    stdfn ={    ser_write,    ser_read,    ser_stat};int printf(const char *fmt, ...){    char    buffer[256];    va_list    ap;    int    len;    va_start(ap, fmt);    len = vsprintf(buffer, fmt, ap);    va_end(ap);    if (stdfn.write)        stdfn.write(buffer, len);    //lcd_prints(buffer, len);    return len;}int getc(void){    char    buffer[2];    clear_timer(KEY_TIMER);    return (stdfn.read(buffer, 1) == 1) ? buffer[0] : -1;}int gets(char *s){    int    cnt = 0;    char    c;    while ((c = getc()) != CR) {        if (c != BS) {              cnt ++;            *s ++ = c;            printf("%c", c);        }         else {            if (cnt > 0) {                 cnt --;                *s -- = 0x0;		printf("%c%c%c", c, ' ', c);            }         }    }     s = (char *)NULL;    return  cnt;}int getc_timed(int cs){    char    buffer[2];    set_timer(KEY_TIMER, cs);    return  (stdfn.read(buffer, 1) == 1) ? buffer[0] : -1;}int putc(char buffer){    stdfn.write((char *)&buffer, 1);    return  1;}int putchar(char buffer){    stdfn.write((char *)&buffer, 1);    return  1;}int puts(char *str){    int    cnt;    char    c;    for (cnt = 0; str[cnt]; cnt ++)        putc(str[cnt]);    return  cnt;}

⌨️ 快捷键说明

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