sscanf函数用法详解
的有关信息介绍如下:
作为一个资深程序员,今天小编跟大家讲讲C语言中sscanf函数的使用方法。
sscanf函数原型为:
int sscanf(const char *buffer , const char *format , [argument ]...);
参数说明:
buffer 为存储的数据
format 为格式控制字符串
argument 选择性设定字符串
函数功能:
从一个字符串中读进与指定格式相符的数据的函数,即sscanf会从buffer里读取数据,依照format的格式将数据写入到argument里
sscanf函数举例 1:
# include int main(void){ char str; //此处buf是数组名,它的意思是将hello 123456以%s的形式存入str中?? sscanf("hello 123456", "%s", str); printf("%s\n", str); system("pause"); return 0;}在这个例子中,sscanf只将字符串“hello”赋给了变量str,说明sscanf使用格式“%s”赋值遇到空格则会结束。
sscanf函数举例2:
# include int main(void){ char str; sscanf("helloworld!", "%4s", str); printf("%s\n", str); system("pause"); return 0;}
这个例子演示了使用sscanf取指定长度的字符串。这里取最大长度为4字节的字符串,即输出“hell”
sscanf函数举例3:
# include int main(void){ char str; sscanf("123456abcdedf", "%[^a-z]",str); printf("%s\n",str); system("pause"); return 0;}
这里演示sscanf函数取到指定字符为止的字符串。这个例子中取遇到任意小写字母为止的字符串,所以结果为“123456”。
sscanf函数举例4:
# include int main(void){ char str;
char str1;
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", str); printf("%s\n", str);
sscanf("123456abcdedfBCDEF", "%[1-9A-Z]", str1); printf("%s\n", str1);
system("pause"); return 0;}这个例子演示sscanf函数取仅包含指定字符集的字符串。
第一个sscanf函数取仅包含1到9和小写字母的字符串,输出结果为“123456abcdedf”
第二个sscanf函数取不到1-9和A-Z的任何字符就会停止,所以输出“123456”,而不是“123456BCDEF”
sscanf函数举例5:
# include int main(void){ int a, b, c, d; sscanf("192.168.1.1", "%d.%d.%d.%d",&a,&b,&c,&d); printf("%d\n%d\n%d\n%d\n", a,b,c,d); system("pause"); return 0;}这个例子演示如何使用sscanf将字符串IP地址转换成整数。这里分别输出了四个整数,192、168、1、1。
sscanf函数举例6:
# include int main(void){ char str; sscanf("hello/you are good!@world", "%*[^/]/%[^@]", str); printf("%s\n", str); system("pause"); return 0;}这个例子比较复杂,我们指定赋值格式为"%*[^/]/%[^@]",其中“*”表示跳过此数据,不进行读取。“%*[^/]”则表示跳过字符“/”前面所有的数据,“/%[^@]”则表示,读取“/”后面的所有数据,知道碰到字符“@”,所以这个例子输出结果为“you are good!”
sscanf与scanf函数都是用于输入,其中scanf从输入缓冲区读取数据,sscanf则从固定字符串按格式读取数据,并且sscanf更加强大灵活。可以实现一下几种方式:
(1)取指定长度的字符串
(2)取到指定字符为止的字符串
(3)取仅包含指定字符集的字符串
(4)取需要的字符串
(5)使用正则构造复杂格式读取
版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/answer/151549.html