int
main() {
int i, i2, i3, len;
sscanf("1234", "%2d", &i); 【%后面可以加一个数字,指定最多使用多少个字符】
printf("Got i: %d\n", i);
sscanf("1234 567 8910", "%d %*d %d %n", &i, &i2, &len); 【%后面加*,意思是读取相应的那部分字符,但不把转换结果赋予任何变量】
printf("Got i2: %d\n", i2);
printf("# of chars consumed: %d\n", len);
sscanf("1234 567 89", "%2d %*1d %1d %n", &i, &i3, &len); 【%n不消耗输入字符串,它只是将目前为止已消耗的字符数存入指定变量】
printf("Got i2: %d\n", i3);
printf("# of chars consumed: %d\n", len); 【注意%*1d的用法;另外%1d不但消耗了字符4,还有其后的4个空格,所以n=8】
char buf[30], b2[30];
sscanf("abcdefghijk;12345", "%29[a-z]%n", buf, &len); 【%后面可以用方括号指定一个像正则表达式的字符集,^-的含义都一样】
printf("Got string %s, length %d\n", buf, len);
sscanf("abcde4ghijk;12345", "%29[^4]4%29[^4]", buf, b2); 【[]和^配合使用可以达到strtok的效果】
printf("Got string %s, %s\n", buf, b2);
return 0;
}
输出结果:
$ ./a.out
Got i: 12
Got i2: 8910
# of chars consumed: 13
Got i2: 4
# of chars consumed: 8
Got string abcdefghijk, length 11
Got string abcde, ghijk;123
阅读(673) | 评论(0) | 转发(0) |