码迷,mamicode.com
首页 > 其他好文 > 详细

sscanf,sprintf用法

时间:2014-11-12 07:07:29      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   os   使用   sp   div   

#include<string.h>
#include<stdio.h>

int main()
{
char buf[512],sztime1[16],sztime2[16];
sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!
printf("%s\n", buf);

sscanf("123456 ", "%4s", buf);//取最大长度为4字节的字符串
printf("%s\n", buf);

sscanf("123456a bcdedf", "%[^ ]", buf);//取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
printf("%s\n", buf);

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);//取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
printf("%s\n", buf);

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);//取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
printf("%s\n", buf);

//给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非‘@‘的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);

//给定一个字符串"hello, world",仅保留world。(注意:","之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)
sscanf("hello, world", "%*s%s", buf);//%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了,如果没有空格则结果为NULL。
printf("%s\n", buf);

//sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.
//如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。
//%[]类似于一个正则表达式。[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z以外的所有字符。
sscanf("2006:03:18 - 2006:04:18", "%[0-9,:] - %[0-9,:]", sztime1, sztime2);
printf("%s,%s\n", sztime1,sztime2);

//%[^-]匹配到‘-’默认为存到sztime1的字符串“2006:03:18”加空格符,
//所以%s会默认输入“-2006:04:18”到sztime2这也就是%s前面加‘-’的原因。输出跟作者一样,但更易懂、易读。
sscanf("2006:03:18-2006:04:18","%[^-]-%s",sztime1,sztime2);
printf("%s,%s\n", sztime1,sztime2);

}


int main()
{
char *p;
char *q="abcdef";
sprintf(p,"%s",q);
printf("p=%s\n\n",p);
}

 

 

sscanf,sprintf用法

标签:style   blog   io   color   ar   os   使用   sp   div   

原文地址:http://www.cnblogs.com/x113/p/4091016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!