提取指定个数的字符或数值 %3s %3d
获取 连续的3个字符 和 连续的3个数字
1char buf[128] = "hel1234world"; 2char buf2[128]=""; 3int a =0; 4sscanf(buf, "%3s%3d",buf2, &a); // hel 123 5printf("%s %d\n",buf2, a);
%*s 跳过提取到的字符串 %*d 跳过提取的数值
1char buf[128] = "helloworld"; 2char buf2[128] = ""; 3sscanf(buf, "%*c%*3s%s", buf2); // oworld 4puts(buf2); 5 6char buf3[128] = "123456"; 7int a=0; 8sscanf(buf3, "%*2s%2d%*s", &a); // 34 9printf("%d\n",a);
%[a-z] 表示匹配 a 到 z 中任意字符(尽可能多的匹配)
1sscanf("abcABC","%[a-z]") // 提取的结果是"abc"
%[aBc] 匹配 a、B、c 中一员,贪婪性
1sscanf("abcABC","%[aBc]") // 提取的结果是"a"
%[^aFc] 匹配非 a F c 的任意字符,贪婪性
1sscanf("abcABC","%[^A]") // 提取的结果是"abc" 2sscanf("[简单爱:啦啦啦]","%[^]]") // 提取的结果是"[简单爱:啦啦啦" 3sscanf("[简单爱:啦啦啦]","%[^:]") // 提取的结果是"[简单爱" 4sscanf("[简单爱:啦啦啦]","%*c%[^:]") // 提取的结果是"简单爱"、 5sscanf("[简单爱:啦啦啦]","%*[^:]%*c%[^]]") // 提取的结果是"啦啦啦" 6sscanf("[简单爱:啦啦啦]","%*[^:]:%[^]]") // 提取的结果是"啦啦啦"
