C语言sscanf函数使用总结
2017-12-05 17:12
429 查看
最近看算法的入门紫皮书时,看到了sscanf函数。这个函数在有关字符串的处理题中用起来还是挺好用的。在此,总结一下用法。
用起来跟正则表达式差不多。有的扫描集的使用在这里就不详细介绍了,感兴趣的可以搜一下scanf扫描集的使用。
sscanf用法跟scanf差不多,只不过scanf是从标准输入stdin中读入,而sscanf函数是从指定的字符串中读取。相比scanf函数,sscanf函数多了第一个参数,传入一个字符串。
用法1:
//拷贝字符串
运行结果
123456
用法2:
//取指定长度的字符串
运行结果
123
用法3:
//将表示数字的字符串转换成整型变量
运行结果
123456
用法4:
//取到指定字符为止的字符串。
运行结果
fengxin
运行结果
fengxin
用法5:
//取仅包含指定字符集的字符串
运行结果
123456fengxin
用法6:
//取需要的字符串
运行结果:
year:2017,month:12,day:5
用法7:
//%[]: 亦可用于格式中, (即 %d 和 %*s) 加了星号 () 表示跳过此数据不读入. (也就是不把此数据读入参数中)
运行结果:
blog
//给定一个字符串blog/fengxinlinux@123,获取 / 和 @ 之间的字符串,先将 “blog/”过滤掉,再将非’@’的一串内容送到str中
运行结果
fengxinlinux
函数定义
int sscanf (const char *str,const char * format,........);
函数说明
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值
成功则返回参数数目,失败则返回-1,错误原因存于errno中。代码示例
这个函数的使用方法很简单,举几个代码示例就明白了。sscanf的功能强大在于支持扫描集的使用,即%[]。用起来跟正则表达式差不多。有的扫描集的使用在这里就不详细介绍了,感兴趣的可以搜一下scanf扫描集的使用。
sscanf用法跟scanf差不多,只不过scanf是从标准输入stdin中读入,而sscanf函数是从指定的字符串中读取。相比scanf函数,sscanf函数多了第一个参数,传入一个字符串。
用法1:
//拷贝字符串
#include<stdio.h> int main() { char str[100]; sscanf("123456","%s",str); puts(str); return 0; }
运行结果
123456
用法2:
//取指定长度的字符串
#include<stdio.h> int main() { char str[100]; sscanf("123456","%3s",str); puts(str); return 0; }
运行结果
123
用法3:
//将表示数字的字符串转换成整型变量
#include<stdio.h> int main() { //char str[100]; int res; sscanf("123456","%d",&res); // puts(str); printf("%d\n",res); return 0; }
运行结果
123456
用法4:
//取到指定字符为止的字符串。
#include<stdio.h> //取遇到空格为止字符串 int main() { char str[100]; sscanf("fengxin blog","%[^ ]",str); puts(str); return 0; }
运行结果
fengxin
#include<stdio.h> //取遇到'/'为止的字符串 int main() { char str[100]; sscanf("fengxin/blog","%[^/]",str); puts(str); return 0; }
运行结果
fengxin
用法5:
//取仅包含指定字符集的字符串
#include<stdio.h> //只取数字和小写字母 int main() { char str[100]; sscanf("123456fengxinBLOG","%[1-9a-z]",str); puts(str); return 0; }
运行结果
123456fengxin
用法6:
//取需要的字符串
#include<stdio.h> int main() { //char str[100]; int year,month,day; sscanf("2017.12.5","%d.%d.%d",&year,&month,&day); printf("year:%d,month:%d,day:%d\n",year,month,day); return 0; }
运行结果:
year:2017,month:12,day:5
用法7:
//%[]: 亦可用于格式中, (即 %d 和 %*s) 加了星号 () 表示跳过此数据不读入. (也就是不把此数据读入参数中)
#include<stdio.h> int main() { char str[100]; sscanf("fengxin blog","%*s%s",str); puts(str); return 0; }
运行结果:
blog
//给定一个字符串blog/fengxinlinux@123,获取 / 和 @ 之间的字符串,先将 “blog/”过滤掉,再将非’@’的一串内容送到str中
#include<stdio.h> int main() { char str[100]; sscanf("blog/fengxinlinux@123","%*[^/]/%[^@]",str); puts(str); return 0; }
运行结果
fengxinlinux
相关文章推荐
- C语言—sscanf函数使用总结
- 让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码
- C语言中的sscanf()函数使用详解
- C语言sscanf函数用法总结(一) 正则表达式
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- 高级C语言教程-sscanf()函数使用方式
- C语言中用于产生随机数的函数使用方法总结
- C语言sscanf函数的总结
- C语言中函数指针的三种使用方法总结
- C语言sscanf函数的总结
- C语言中sizeof函数的基本使用总结
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- C语言sscanf函数的总结
- C语言sprintf与sscanf函数总结及fscanf,sscanf,fprintf,sprintf之间的区别
- C语言sscanf函数的总结