sprintf 和 sscanf 详细解读(有可运行代码)
来源:互联网 发布:免费流量软件下载 编辑:程序博客网 时间:2024/06/13 08:43
sprintf
//sprintf( 目标,格式,原来的数据);//可以把好多 数据都格式化到同一个目标中
//sprintf函数的格式: 最前面是 char型的字符串,头文件是 #include <stdio.h>
// int sprintf( char *buffer, const char *format [, argument,...] );
#include <cstdio> //测试正确int main(){ char s[20]; //意思是,把 十进制数 转换成 8 进制数,存到字符串 是 中 sprintf(s, "%08X", 4567); //产生:"000011D7" //位数不够的话,在前面补 0 printf("%s\n",s); sprintf(s, "%8d", 4567); //产生:" 4567" //不够的话,补充空格(默认右对齐) printf("%s\n",s); sprintf(s, "%-8d%8d", 4567,1236); //产生:"4567 1236" //( - 号,左对齐) printf("%s\n",s); //这儿的 s 会自动更新值 sprintf(s, "%.3f", 3.1415626); //产生:" 3.142" printf("%s\n",s);/*******************************************************************/ char s1[]= {'A','B','C','D','E'}; char s2[]= {'Q','W','E','R','T','Y'}; sprintf(s,"%8.2s",s1); //产生" AB"(先从原来 s1 中取出2个字符,2<8,所以前面补充6个空格) printf("%s\n",s); sprintf(s,"%.4s%.3s",s1,s2); //产生”ABCDQWE” printf("%s\n",s); sprintf(s, "%.*s %.*s", sizeof(s1), s1, sizeof(s2), s2); //产生”ABCDE QWERTY” //如果 ""里面有空格,则空格也被 格式化进入 目标串中 printf("%s\n",s); /*******************************************************************/ /*sprintf(s, "%s%s",s1,s2); //直接这样连接字符串 不行*/ int i = 100; sprintf(s,"%.2f",(double)i); //输出”100.00” printf("%s\n",s); sprintf(s,"%p",&i); //输出”0028fee8” printf("i 的内存地址是 %s\n",s);//对字符串进行连接(可以多个字符串,也可以中间添加), //效率比strcat 高 char who[] = "I"; //其实用 char *who = "I" 也行 char vv[] = "very"; char whom[] = "CSDN"; int len = sprintf(s, "%s %s love %s.", who,vv,whom); //产生:"I very love CSDN. " printf("%s\n",s); //sprintf的返回值是字符数组中字符的个数, //即字符串的长度,不用在调用strlen(s)求字符串的长度。 printf("字符串s 的长度(空格也计数)是%d\n",len); //产生”12” return 0;}
sscanf
//sscanf( 原来的数据,格式,目标) //可以把一个数据分解到多个目标中
#include <cstdio> //测试正确#include <cstring>int main(){ int a,b,c; sscanf("2008: 03: 18","%d:%d:%d",&a,&b,&c);//注意,这儿要取 & printf("%d %d %d\n",a,b,c); //产生”2008 3 18” char buf[512]; sscanf("123456(空格) asdf", "%s", buf); //读取的时候,buf 自动清空 printf("%s\n", buf); //产生”123456” // cout<<buf<<endl; //在C++中,这样竟然也能输出 sscanf("123456 ", "%4s", buf); printf("%s\n",buf); //产生”1234”/*******************************************************************/ sscanf("1234abMNB","%[^N]",buf); //取到字符'N'的时候停止(不包含N) printf("%s\n",buf); //产生”1234abM” sscanf("123456abcdMNB","%[1-9a-z]",buf); //只读取数字和小写字母(遇到其他字母或者字符,停) printf("%s\n",buf); //产生”123456abcd” sscanf("123456abBCDEF", "%[^A-Z]", buf); printf("%s\n",buf); //产生”1234ab” sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf); //把两个字符之间的内容读取出来 printf("%s\n", buf); //产生”12DDWDFF” sscanf("aidc#ad","%[^#]",buf); printf("%s\n",buf); //产生”aidc”/*******************************************************************/ sscanf("hello, world", "%*s%s", buf); //以空格间隔,*的内容被过滤掉 printf("%s\n",buf); //产生”world” sscanf("12345acc","%*d%s",buf); //5后面,有空格也行 printf("%s\n",buf); //产生”acc” /*******************************************************************/ char t1[100],t2[100]; sscanf("2006:03:18 - 2008:04:18", "%[0-9,:] - %[0-9,:]",t1, t2); printf("%s %s\n",t1,t2); //产生”2006:03:18 - 2008:04:18” char str[100] ="123568qwerSDD!!AE"; char lowercase[100]; double num; sscanf(str,"%d%[a-z&&A-Z]", &num, lowercase); printf("The number is: %d.\n", num); //产生”123568” printf("The lowercase is: %s.", lowercase); //产生”qwerSDD” /***************************************************************/ double D=1.23; char s5[]="adadfagag 876.52344 aaaabbb"; sscanf(s5,"%*s%lf",&D); // char to double(字符串转为 double类型) printf("%.4f\n",D); //产生”876.5234” 自动的进行四舍五入 D = D + 100; printf("%.4f\n",D); //产生”976.5234” return 0;}
阅读全文
0 0
- sprintf 和 sscanf 详细解读(有可运行代码)
- java 大数取模(有可运行代码和详细注解)
- sscanf和sprintf
- sscanf 和 sprintf
- sscanf和sprintf
- sscanf和sprintf
- sscanf 和sprintf 函数
- sprintf和sscanf
- sscanf和sprintf使用
- sprintf() 和 sscanf()
- Sprintf 和 sscanf
- sscanf和sprintf
- sprintf和sscanf
- sprintf和sscanf详解
- sscanf和sprintf
- sscanf() 和 sprintf() 函数
- sprintf和sscanf总结
- sprintf和sscanf
- Spring Bean 初始化的三种方式
- 生成Excel文件
- C++ stack 用法
- swift3.0-iOS app内部语言国际化(本地化)
- [Servlet] HttpServletResponse
- sprintf 和 sscanf 详细解读(有可运行代码)
- fatal error: expat.h: No such file or directory
- Gradle 完整指南(Android)
- Hololens API解析Input-GestureRecognizer
- 逻辑判断与循环——True&False
- 前端与后台交互所需技术
- 第十一篇 登录和注册
- 兔子数列变形
- Maven 多环境配置:开发,测试,生产环境