注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学习笔记

正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。

 
 
 

日志

 
 

[C/C++笔记]sscanf与sprintf的用法小结  

2012-12-12 22:05:26|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
原型:int sscanf(const char *str,const char *format,...)
功能:根据format格式,读取字符串str。
返回值:返回输入项成功匹配或指定的数
原型:int sprintf(char *str,const char *format,...)
功能:根据format格式产生输出并写入到字符串str中去。
返回值:返回打印的字符数(不包含结尾'\0')

例子:从主函数argv中获取参数,并进行类型转换。
#include <stdio.h>

int main(int argc, char **argv)
{
char str1[20];
char str2[20];
sscanf(argv[1],"%s",str1);
sprintf(str2,"%s",argv[1]);
printf("str1=%s,str2=%s\n",str1,str2);
return 0;
}
       可以看出,当不需要对参数进行处理,仅仅是复制时,sscanf和sprintf可以通用,但是要注意输入和输出的关系。第一个参数是读取和写入的对象。
       在下面的几种情况下,sscanf和sprintf各有自己特别的用法。
一、sscanf
①sscnaf可用来对一串字符进行截取,取出其中的一部分或分成字符串。
#include <stdio.h>

int main(int argc, char **argv)
{
char str1[]="Fantity is 25 years old!";
char str2[10];
int i;
sscanf(str1,"%s %*s %d",str2,&i);
printf("str2=%s,i=%d\n",str2,i);
return 0;
}
str2=Fantity,i=25
       其中,%*s表示忽略一个字符串,可连续加多个来忽略多个字符串。注意%s和%*s之间只能连着或用空格隔开,不可使用逗号“,”。

②去指定长度的字符串,如取4个字符长度。
#include <stdio.h>

int main(int argc, char **argv)
{
char str2[10];
sscanf("123456","%4s",str2);
printf("str2=%s\n",str2);
return 0;
}
str2=1234

③取到指定的字符串为止,比如遇到空格。
#include <stdio.h>

int main(int argc, char **argv)
{
char str2[10];
sscanf("123456 abcdef","%[^ ]s",str2);
printf("str2=%s\n",str2);
return 0;
}
str2=123456

④取包含指定的字符集的字符串,如取仅包含0~9和小写字母的字符串。
#include <stdio.h>

int main(int argc, char **argv)
{
char str2[20];
sscanf("123456abcdefABCDEF","%[1-9a-z]s",str2);
printf("str2=%s\n",str2);
return 0;
}
str2=123456abcdef

⑤取到指定的字符集为止,比如遇到大写字母停止。
#include <stdio.h>

int main(int argc, char **argv)
{
char str2[20];
sscanf("123456abcdefABCDEF","%[^A-Z]s",str2);
printf("str2=%s\n",str2);
return 0;
}
str2=123456abcdef

二、sprintf
       sprintf可用来在一个字符串的前后附加字符串,或将多个字符串合并在一起。
#include <stdio.h>

int main(int argc, char **argv)
{
char str[]="Fantity is 25";
char string[20];
sprintf(string,"Hello,%s",str);
printf("string=%s\n",string);
return 0;
}
string=Hello,Fantity is 25
  评论这张
 
阅读(1021)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017