Sprintf 和 sscanf

来源:互联网 发布:js history pushstate 编辑:程序博客网 时间:2024/05/18 16:15

printf是标准输出流的输出函数,用来向标准输出设备输出;

fprintf则是向文件输出,将输出的内容输出到硬盘上的文件中 

int sprintf( char *buffer, const char *format, [ argument] … );


头文件

stdio.h


原型

int sprintf( char *buffer, const char *format, [ argument] … );


参数列表

bufferchar型指针,指向将要写入的字符串的缓冲区。

format:格式化字符串。

[argument]...:可选参数,可以是任何类型的数据。

返回值:字符串长度(strlen

 

1

/*例子*/

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>//某个头文件

int main ()/*主函数“整数”类型*/

{

      char buffer [50];/*“字符”类型的数组,下面共有50个元素。*/

      int n, a=5, b=3;/*三个变量都为“整数”类型*/

      n=sprintf (buffer,"%d plus %d is %d", a, b, a+b);/*赋予数值*/

      printf ("[%s] is a string %d chars long\n",buffer,n);/*“格式输出”*/

 

      return 0;/*“返回 零”

      也就是程序正常退出*/

}

 

 

 

 

 

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源

int sscanf(const char *buffer,const char *format,[argument ]...);

buffer存储的数据

format格式控制字符串

argument 选择性设定字符串

sscanf会从buffer里读进数据,依照format的格式将数据写入到argument里。

 


例子

1. 常见用法。

char buf[512] ;

sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!

printf("%s\n", buf);

结果为:123456

2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

sscanf("123456 ", "%4s", buf);

printf("%s\n", buf);

结果为:1234

3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

sscanf("123456 abcdedf", "%[^ ]", buf);

printf("%s\n", buf);

结果为:123456

4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);

printf("%s\n", buf);

结果为:123456abcdedf

当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);

printf("%s\n",buf);

结果为:123456

5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);

printf("%s\n", buf);

结果为:123456abcdedf

6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,

先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中

sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);

printf("%s\n", buf);

结果为:12DDWDFF

7、给定一个字符串“hello, world”,仅保留world。

(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)

sscanf(“hello, world”, "%*s%s", buf);

printf("%s\n", buf);

结果为:world

%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了

如果没有空格则结果为NULL。

原创粉丝点击