printf(格式化输出函数)_百度百科printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf("<格式化字符串>", <参量表>)。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
https://baike.baidu.com/item/printf/7467706?fr=aladdin
printf输出全格式(C语言)_柏源宜次的博客-CSDN博客_printf输出格式在学尚硅谷C语言视频时,想自己先把他说的项目写一遍在去看他的视频,突然发现我对printf输出就只会%d,%f之类的,所以就在这里总结一下。特殊符号输出:据我统计,正常的可视ASCII(码值为32-126之间)的字符,据我测试的就这些不能只有下面四个不能直接输出,其它均可通过键盘输入用printf函数直接打印出来。"\"%%%'\'\\\代码:#include <stdio.h>int main(){ ...
https://blog.csdn.net/ldl666999/article/details/123427550
1.整形变量
无符号
%u:unsigned int
十进制输入输出:
%hd:short
%d:decimal int(%i:是上古时代写法)
%ld:long int
%lld/%Ld:long long
%lu:long unsigned int
%llu:long long unsigned int
%zd或%zu:size_t(32位系统=%u,64位系统=%lu)类型的值。
/**需要指出的是对于负数,不存在16进制或者8进制的负数,只会答应存在于内存中的补码**/
八进制输入输出:
%o:unsigned octal
十六进制输入输出:
unsigned hexadecimal number
%x:出现abcdef小写
%X:出现ABCDEF大写
%#X:出现abcdef小写,在输出前加0x,默认整形,4个字节大小(scanf("%X",&i);)
%#lX:出现ABCDEF大写,在输出前加0X,长整形,8个字节大小,输出地址方便
%08x,%08X:八位,前方不足补0
2.浮点数变量
%f:float
%lf:double
%Lf:long double
%m.n : m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
l 对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
%g:输出时忽略末尾无意义的0
3.科学计数法
%e:float/double、e-记数法
%E:float/double、E-记数法
%Le:long double
3.字符
%c:char
%C:wchar
%s:char*(%s = %hs = %hS 输出 窄字符)
%S:wchar*(%ws = %S 输出宽字符串)
%- width.precision s
-:向左对齐
width:一个整数,代表输出的域宽
precision:一个整数,代表输出的进度
例如:%-10.5s:向左对齐,输出域宽10,最多输出5个字符
4.地址
%p:(void*)
%% 打印一个百分号
%a 浮点数、十六进制数字和p-记数法(c99
%A 浮点数、十六进制数字和p-记法(c99)
%d 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。)
%f 单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数)
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%u 无符号十进制整数(unsigned int)
%x 使用十六进制数字0xf的无符号十六进制整数
%X 使用十六进制数字0xf的无符号十六进制整数
%I64d 用于INT64 或者 long long
%I64u 用于UINT64 或者 unsigned long long
%I64x 用于64位16进制数据
#include <stdio.h>
#include <limits.h>
#define FILE_TYPE ".txt"
//typedef long unsigned int size_t
int main(void)
{
printf("%u %u\n",PATH_MAX,NAME_MAX);
char buf[PATH_MAX + NAME_MAX + sizeof(FILE_TYPE)];
printf("%lu\n",sizeof(buf));
//sizeof()编译阶段运算完成,即main.c->main.s
return 0;
}
#include <iostream>
int main(void)
{
const char* s = "123456789";
int width = 10;
int precision = 6;
printf("%-*.*s\n",width,precision,s);
return 0;
}
#include <stdio.h>
int main(void)
{
double i = 3.123456789;
printf("%.13lf\n", i);
int j = 123;
printf("%d;%8d;%-8d;%+8d;%#X;%#o \n", j, j, j, j, j, j);
return 0;
}
#include <stdio.h>
int main(void)
{
float a = 12.34;
printf("%f\n", a);
printf("%e\n", a);
printf("%g\n", a);
return 0;
}
#include <stdio.h>
int main(void)
{
char szBuff[20];
scanf("%19s", szBuff);
//%19s,限制最多输入19个字符
//输入:12345678901234567890123456789
//Input 1234567890123456789
printf("Input %s", szBuff);
return 0;
}
int main(int argc, char* argv[])
{
char chValue1 = '\015'; //8进制
char chValue2 = '\0'; //8进制
chValue2 = '0'; //注意与上一行进行区分
char chValue3 = '\x0C'; //16进制
char chValue4 = 101; //10进制
return 0;
}
#include <iostream>
int main(void)
{
const char* s = "hell%o,world";
//printf(s);//不安全啊,参数中有%号
printf("%s",s);//安全
return 0;
}