sscanf实用功能简介
1.适用范围:适用于对某一字符串特定要求取值。
2.基本格式:sscanf(某一字符串的地址, “取值条件”, 存储地址);
3.取值条件的种类:
(1)全取(只能取到第一个空格处):%s.(与%[^ ]等价,%[^ ]表示到第一个空格处)
#include<stdio.h>
int main()
{
char a[100]={"hello world"};
sscanf(a,"%s",a);
printf("%s\n",a);
return 0;
}
#include<stdio.h>
int main()
{
char a[100]={"hello world"};
sscanf(a,"%[^ ]",a);
printf("%s\n",a);
return 0;
}
(2)取指定长度的字符串(也只能到第一个空格处):%ns(表示第几个)
#include<stdio.h>
int main()
{
char a[100]={"hello world"};
sscanf(a,"%3s",a);
printf("%s\n",a);
return 0;
}
(3)取到指定字符之前一个字符的字符串:%[^ 特定字符]
#include<stdio.h>
int main()
{
char a[100]={"hello world"};
sscanf(a,"%[^ l]",a);
printf("%s\n",a);
return 0;
}
(4)取到指定字符集前一个(或一类)的字符串:%[首字符-指定字符]或%[^A-Z](这指一类,从A-Z这些大写字母)。
#include<stdio.h>
int main()
{
char a[100]={"123456abcdedfBCDEF"};
sscanf(a,"%[1-b]",a);
printf("%s\n",a);
return 0;
}
#include<stdio.h>
int main()
{
char a[100]={"123456abcdedfBCDEF"};
sscanf(a,"%[^A-Z]",a);
printf("%s\n",a);
return 0;
}
(5)获取两特定符号字符之间的字符串:%*[特定符号]/%[特定符号](注意:是特定符号,而不是数字或字母)
#include<stdio.h>
int main()
{
char a[100]={"34fe/hello world/sfsd"};
sscanf(a,"%*[^/]/%[^/]",a);
printf("%s\n",a);
return 0;
}
(6)读取空格后的内容:%*s%s。
*表示过滤掉一个字符串
#include<stdio.h>
int main()
{
char a[100]={"hello world"};
sscanf(a,"%*s%s",a);
printf("%s\n",a);
return 0;
}
#include<stdio.h>
int main()
{
char a[100]={"hello world 2021"};
sscanf(a,"%*s%*s%s",a);
printf("%s\n",a);
return 0;
}
以上介绍的只是一些较为简单实用的功能