sscanf和sprintf的用法
来源:互联网 发布:php过滤所有的空格 编辑:程序博客网 时间:2024/05/16 23:48
sscanf和sprintf的用法
sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数,包含在头文件stdio.h中。
1.sscanf()
(1)用法:
int sscanf(const char *buffer, const char *format, ...);
(2)说明:sscanf函数和scanf函数很像,只不过是scanf是从控制台下用户自己输入的,而sscanf是从buffer中读取 数据,而不用用户输入了(相当于用户输入的字符串是buffer)。后面的argument是要存储的位置。在匹 配的过程中,只要遇到不匹配的情况,sscanf就结束运行。
(3)注意:①sscanf函数返回值的含义是有多少个变量被赋值。
② sscanf会将参数str的字符串根据参数format字符串来转换并格式化数据。
③返回值成功则返回参数数目,失败则返回-1,错误原因存于errno中。
(4)使用方法:
①常见用法
char str[100] = {0};sscanf("123456 ", "%s", str);printf("str=%s/n", str);
②取指定长度的字符串
sscanf("123456 ", "%4s", str);printf("str=%s/n", str);
③取到指定字符为止的字符串
sscanf("123456 abcdedf", "%[^ ]s", str);printf("str=%s/n", str); // 123456
④取仅包含指定字符集的字符串
sscanf("123456abcdedfBCDEF", "%[1-9,a-z]s", str);printf("str=%s/n", str); //123456abcdedfsscanf("123456BCDEFabcdedf", "%[1-9,a-z]s", str);printf("str=%s/n", str); //123456
⑤取到指定字符集为止的字符串sscanf("123456abcdedfBCDEF", "%[^A-Z]s", str);printf("str=%s/n", str); //123456abcdedf
⑥给定一个字符串"hello, world",仅保留world。(注意:","之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
sscanf("hello, world", "%*s%s", buf);printf("%s\n", buf); //world
%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了。如果没有空格则结果为NULL。(5)实例:
#include <stdio.h>int main(){ const char* s = "123456"; char buf[20]; unsigned int a1, a2, a3; //注意不能用unsigned char sscanf( s, "%02x%02x%02x", &a1, &a2, &a3 ); printf( "%02x,%02x,%02x\n", a1, a2, a3 ); return 0;}
(1)用法:
int sprintf(char *buffer,const char *format,...);
(2)说明:sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命 令行上输出。spritnf 返回值为本次函数调用最终打印到字符缓冲区中的字符数目。其中,第二个参数是 格式化字符串。
①常见的例子之一便是把整数打印到字符串中,如下:
sprintf(s, "%d", 123); //"123"
②可以指定宽度,不足的左边补空格,如下: sprintf(s, "%8d%8d", 123, 4567); //" 123 4567"
③也可以左对齐,如下:sprintf(s, "%-8d%8d", 123, 4567); //"123 4567"
(3)使用方法:除过上述的格式化字符串之外,还有以下的用法:
①用于进制转换
【可方便得到变量的十六进制和八进制字符序列,通过稍加处理即可得到每一位的值】
【可方便得到变量的十六进制和八进制字符序列,通过稍加处理即可得到每一位的值】
char arr[100];int b=255;sprintf(arr,"%x",b); //arr包含"ff" arr[0]='f' arr[1]='f'
②用于连接字符串【可方便连接两个或者多个字符串】
char buf[1024];char a[100]="I ";char b[100]="love ";char c[100]="banana."sprintf(buf,"%s%s%s",a,b,c); //buf 包含"I love banana."
阅读全文
0 0
- sscanf和sprintf的用法
- sscanf 和 sprintf的用法
- sscanf和sprintf的用法
- sscanf和sprintf的用法
- sprintf和sscanf的用法
- sscanf和sprintf的用法
- sscanf和sprintf的高级用法
- sscanf函数和sprintf函数的用法
- sscanf和sprintf的强大用法--自用
- sscanf和sprintf函数的用法
- sprintf,sscanf的用法(转)
- sprintf与sscanf的用法
- linux c sscanf和sprintf的简单用法与理解
- C语言sscanf和sprintf的用法及实例
- sscanf / sprintf 函数和 snprintf 函数的用法
- 关于sprintf(snprintf)和sscanf的用法
- c语言中sscanf()和sprintf()函数的用法
- sprintf和sscanf的详解
- IOS上webView中使用html5 video的问题
- Ubuntu-Python2.7安装 scipy,numpy,matplotlib
- 与MQ通讯的完整JAVA程序
- Android实现推送方式解决方案
- vue学习笔记之——v-for与局部组件的传值
- sscanf和sprintf的用法
- Vue2.0 探索之路——vuex入门教程和思考
- 牛人经验1(逻辑工程师必须寻求转型)
- VPN业务相关常用名词
- VS环境下C#控制台远程连接oracle数据库无需安装客户端非常简单
- 四位数中吸血鬼数的查找
- 快速排序算法java版实现
- 【算法题】希尔排序
- vuex学习实践笔记