首页 > 代码库 > sscanf,sprintf用法

sscanf,sprintf用法

#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用法