scanf
忽略所有的可用连续空白符
如同通过于循环中调用 isspace 确定
格式字符串中 “\n“ 、 ” “ 、 “\t\t“ 或其他空白无区别。
// 以下两条语句等价
// 对于输入 inA = "1 2", inB = "1\n2" 均可正常输入
scanf("%d\n%d", &a, &b);
scanf("%d %d", &a, &b);
匹配一个来自字符集set 的字符的非空字符序列
不是正则, 不是正则,不是正则
char s[20];
//读入整行
scanf("%[^\n]", s);
//防止越界
scanf("%20[^\n]", s);
//对于输入"asdfc", 读入"a"
scanf("%[a-c]", s);
%i 输入不同进制数
该数的格式同 strtol() 以值 0 为 base 时所期望者(基底以首个分析的字符确定)
int a;
scanf("%i", &a);
printf("%i", a);
input: 0x321f
output: 12831
input:0121
output: 81
input: 0b101 (don't work!!!)
output: 0 (or something whatever)
忽略某个输入元素
赋值抑制字符 * 。若存在此选项,则此函数不将结果赋值给任何接收用参数。放在%后面。
int a, b;
scanf("%d %*d %d", &a, &b);
printf("%d %d\n", a, b);
input: 1 2 3
output: 1 3
printf
指定浮点数精度
double u = 123.456789;
printf("%lf\n", u);
printf("%.2lf\n", u);
printf("%.10lf\n", u);
output:
---
123.456789
123.46
123.4567890000
指定字符串长度
const char a[] = "0123456789";
printf("[%6s]\n", a + 7);
printf("[%-6s]\n", a + 7);
printf("[%.5s]\n", a + 2);
output:
---
[ 789]
[789 ]
[23456]
指定进制
int a = 63;
printf("%d %o %x %X\n", a, a, a, a);
printf("%#o %#x %#X\n", a, a, a);
output:
---
63 77 3f 3F
077 0x3f 0X3F
指定场宽
int a = 63;
printf("|%5d|%-5d|\n", a, a);
output:
---
| 63|63 |
本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.