目录
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.