第一个函数参数 const char * 表示字符串
(类似于scanf)第二个函数参数表示 格式
第三个函数参数
首先sscanf函数可以用于以下几种情况:
分离数字:
#include
int main()
{
int a,b;
sscanf("12334","%3d%2d",&a,&b); // 解析:从第一个字符开始,%3d表示取三个字符(组成数字),%2d表示取二个字符(组成数字)
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
#include
int main()
{
int a,b;
sscanf("sfda12334","%3d%2d",&a,&b);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
//解析:这种情况是因为字符串中第一个字符不是‘0’~‘9’则无法取出
分离字符串:
1.#include
int main()
{
int a,b;
char str[128] = { '\0' };
sscanf("fdas2332fdfd","%127[a-z]%4d",str,&b); 解析:127表示可取127个字符放在str中, [a-z]表示只能取[a-z]
printf("%s\n",str);
printf("%d\n",b);
return 0;
}
2.%*s %*d 表示跳过:
#include
int main()
{
int a,b;
char str[128] = { '\0' }; 跳过前面5个字符 0表示补位
sscanf("fdas2332fdfd","%*5s%04d",&b);
/*printf("%s\n",str);*/
printf("%d\n",b);
return 0;
}
3.%.[]s表示宽度
#include
int main()
{
int i = 0;
int k = 0;
char arr[10] = { '\0' };
sscanf("asfda223fds","%5s",arr);
puts(arr);
return 0;
}
4.%[][a-z]
#include
int main()
{
int i = 0;
int k = 0;
char arr[10] = { '\0' };
sscanf("asfda223fds","%9[a-z]",arr); 从第一个字符开始:取9个字符(只能取[a-z])
puts(arr);
return 0;
}
#include
int main()
{
int i = 0;
int k = 0;
char arr[10] = { '\0' };
sscanf("asfda223fds","%[a-z]",arr);这种形式也是对的
puts(arr);
return 0;
}
5.%[^]
#include
int main()
{
int i = 0;
int k = 0;
char arr[10] = { '\0' };
sscanf("SADFASasfda223fds","%[^a-z]",arr);(除了a-z的字符)
puts(arr);
return 0;
}
#include
int main()
{
int i = 0;
int k = 0;
char arr[10] = { '\0' };
sscanf("asfda223fds","%[^a-z]",arr);
puts(arr);
return 0;
}
这种情况就不行:由于开头就是'a' ,又因为不能取a-z中的字符,所以就在开头死循环