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/[email protected],获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非‘@‘的一串内容送到buf中
sscanf("iios/[email protected]", "%*[^/]/%[^@]", 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);
}
时间: 2024-10-16 06:10:13

sscanf,sprintf用法的相关文章

C语言函数sscanf()的用法 (转载

在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)

C语言函数sscanf()的用法(转)

转自:http://www.cnblogs.com/lyq105/archive/2009/11/28/1612677.html C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf

C语言sprintf和sscanf函数用法

以前刚用C语言的时候,觉得字符串很难处理,后来用多了,发现其实并非如此,C语言也提供了许多函数给程序员使用.今天记录一下两个常用的两个字符串处理函数:sprintf和sscanf 1. sprintf 从名称上来看,这个函数名称由三部分组成: s 代表字符串(string) print 代表打印 f 代表格式化(format) 这样拆分,可以大概知道它是干嘛用的了,相对于我们常用的用来处理输出流的printf,sprintf是用来处理字符串的.实际上这个函数,是把数据按格式打印到字符串中,常用于

sscanf sprintf sstream

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 static void sscanf_test(void); 6 7 static void sscanf_test(void) 8 { 9 int ret; 10 char *string; 11 int digit; 12 char buf1[255]; 13 char buf2[255]; 14 char buf3[255];

STL :sscanf sprintf的应用

PAT 1054 网上看到的,很好的应用了这两个函数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <bits/stdc++.h> using namespace std; int main() {     int n, cnt = 0;     char a[50], b[50];     double temp, sum = 0.0

C语言函数sscanf()的用法

sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源. 其中的format可以是一个或多个 {%[*] [width] [{h |

sscanf函数用法详解

sscanf() - 从一个字符串中读进与指定格式相符的数据.  函数原型:  Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );  int scanf( const char *format [,argument]... );  说明:  sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源.  其中的format可以是一个或多个 {%[*] [width]

[详解]sscanf 的用法

最近在写一个脚本读取器 用到了这个极为重要的C函数: (转)sscanf() - 从一个字符串中读进与指定格式相符的数据 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(st

sscanf高级用法级正则表达式

sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源. 函数原型: int scanf( const char *format [,argument]... );其中的format可以是一个或多个: {%[*] [width] [{h|l|I64|L}]  type|'_'|'\t'|'\n'|非%符号}, 注:{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d. 2          width:宽度,一般可以忽略,用法