C //练习 7-3 改写minprintf函数,使它能完成printf函数的更多功能。

C程序设计语言 (第二版) 练习 7-3

练习 7-3 改写minprintf函数,使它能完成printf函数的更多功能。

注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010

 

代码块:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void minprintf(char *fmt, ...) {
   
    va_list ap;
    char *p, *sval;
    int ival;
    double dval;
    unsigned uval;

    va_start(ap, fmt);
    for (p = fmt; *p; p++) {
   
        if (*p != '%') {
   
            putchar(*p);
            continue;
        }

        switch (*++p) {
   
            case 'd':
            case 'i':
                ival = va_arg(ap, int);
                printf("%d", ival);
                break;
            case 'c':
                ival = va_arg(ap, int);
                putchar(ival);
                break;
            case 'u':
                uval = va_arg(ap, unsigned int);
                printf("%u", uval);
                break;
            case 'o':
                uval = va_arg(ap, unsigned int);
                printf("%o", uval);
                break;
            case 'x':
                uval = va_arg(ap, unsigned int);
                printf("%x", uval);
                break;
            case 'X':
                uval = va_arg(ap, unsigned int);
                printf("%X", uval);
                break;
            case 'e':
                dval = va_arg(ap, double);
                printf("%e", dval);
                break;
            case 'f':
                dval = va_arg(ap, double);
                printf("%f", dval);
                break;
            case 'g':
                dval = va_arg(ap, double);
                printf("%g", dval);
                break;
            case 's':
                for (sval = va_arg(ap, char *); *sval; sval++)
                    putchar(*sval);
                break;
            default:
                putchar(*p);
                break;
        }
    }
    va_end(ap);
}

int main(){
   
    char *fmt = "%d %i %c %u %o %x %X %e %f %g %s other\n";
    minprintf(fmt, 10, 12, 'a', 19, 12, 14, 15, 5.4, 4.5, 6.4, "alphabet");

	system("pause");
    return 0;
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 21:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 21:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 21:46:04       82 阅读
  4. Python语言-面向对象

    2024-01-18 21:46:04       91 阅读

热门阅读

  1. python 读写kafka

    2024-01-18 21:46:04       49 阅读
  2. python 常用功能积累

    2024-01-18 21:46:04       45 阅读
  3. 机器学习之协同过滤算法

    2024-01-18 21:46:04       73 阅读
  4. 机器学习在表面缺陷检测中的技术与实践

    2024-01-18 21:46:04       63 阅读
  5. MySQL-索引的介绍和使用

    2024-01-18 21:46:04       50 阅读
  6. Day6、指针的基本学习

    2024-01-18 21:46:04       46 阅读
  7. [贪心算法] 国王游戏

    2024-01-18 21:46:04       47 阅读
  8. 软件设计师考试---计算机硬件基础

    2024-01-18 21:46:04       54 阅读
  9. 服务器——配置免密登录

    2024-01-18 21:46:04       48 阅读
  10. “魔音智能去水印”隐私政策

    2024-01-18 21:46:04       54 阅读
  11. GoLang刷题之leetcode

    2024-01-18 21:46:04       52 阅读