写点什么

printf 函数的常用格式化输出

用户头像
Changing Lin
关注
发布于: 4 小时前
printf函数的常用格式化输出

1.打印 8 进制、10 进制、16 进制输出格式控制:

    int num = 0x9;    /*输出4位8进制的num*/    printf("%04o/n",num);    /*输出2位16进制的num*/    printf("%02X",num);
复制代码

2.打印 2 进制输出格式控制:

可以调用stdlib.h里面的itoa函数,他不是标准库里面的函数,但是大多数编译器里面都有这个函数,所以就介绍一下
itoa函数的原型为char* itoa(int value, char * string, int radix); int value 被转换的整数,char *string 转换后储存的字符数组int radix 转换进制数,如2,8,10,16 进制等,
#include <stdio.h>#include <stdlib.h> int main(){ int a = 12; printf("八进制 --> %o\n", a); printf("十六进制 --> %X\n", a); printf("十进制 --> %d\n", a); char s[10]; itoa(a, s, 2); printf("二进制 --> %s\n", s); itoa(a, s, 3); printf("三进制 --> %s\n", s); return 0;}
复制代码

3.带锁的 printf 方法,线程安全:

int qtss_printf(const char *fmt,  ...){    if (fmt == NULL)        return -1;
OSMutexLocker locker(OS::GetStdLibMutex()); va_list args; va_start(args,fmt); int result = ::vprintf(fmt, args); va_end(args); return result;}
复制代码

4.官方例子:

/* printf example */#include <stdio.h>
int main(){ printf ("Characters: %c %c \n", 'a', 65); printf ("Decimals: %d %ld\n", 1977, 650000L); printf ("Preceding with blanks: %10d \n", 1977); printf ("Preceding with zeros: %010d \n", 1977); printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100); printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); printf ("Width trick: %*d \n", 5, 10); printf ("%s \n", "A string"); return 0;}
复制代码

输出:

Characters: a A

Decimals: 1977 650000

Preceding with blanks: 1977

Preceding with zeros: 0000001977

Some different radices: 100 64 144 0x64 0144

floats: 3.14 +3e+000 3.141600E+000

Width trick: 10

A string

发布于: 4 小时前阅读数: 4
用户头像

Changing Lin

关注

获得机遇的手段远超于固有常规之上~ 2020.04.29 加入

我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。

评论

发布
暂无评论
printf函数的常用格式化输出