随笔 - 0  文章 - 3  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(4)

文章分类

文章档案

C++

linux application

linux develop

shell

tools

搜索

  •  

最新评论

引自http://www.zdnet.com.cn/developer/code/story/0,3800066897,39155056-2,00.htm
#include <stdarg.h>

intprintf(const char *fmt, ...)
{
    const char *s;
    int d;
    char buf[16];
    va_listap;
    va_start(ap, fmt);
    while (*fmt) {
        if (*fmt != '%') {
            putchar(*fmt++);
            continue;
        }
        switch (*++fmt) {
            case 's':
                s = va_arg(ap, const char *);
                for ( ; *s; s++) {
                    putchar(*s);
                }
                break;
            case 'd':
                d = va_arg(ap, int);
                itoa(d, buf, 10);
                for (s = buf; *s; s++) {
                    putchar(*s);
                }
                break;
            /* Add other specifiers here... */              
            default:  
                putchar(*fmt);
                break;
        }
        fmt++;
    }
    va_end(ap);
    return 1;   /* Dummy return value */
}

下面是一些值得注意的事情:

  • 为了节省空间,这个简单的printf()只支持“%s”和“%d”格式的分类符,而不需要任何指示器或者其他调节器。扩展这个函数以支持其他分类符是相对较简单的。
  • C语言的标准要求printf()应该返回输出字符串的数量。这个被返回的值通常被忽略掉了,所以这个轻型的printf()就不会劳心去计算它了,而是返回一个伪值。
  • 一般来说,putchar()这个函数会将字符发送到串口,更通行的方法是通过由中断驱动的串口输出缓冲区以避免延迟。
  • 首标文件<stdarg.h>是一个标准的库首标文件,它为访问传递给printf()的变量自变量列表提供小巧的宏,通常是通过系统堆栈。
posted on 2006-10-17 16:32 崔少伟 阅读(349) 评论(0)  编辑 收藏 引用 所属分类: arm in linux

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理