Sprintf 和 sscanf

2024-02-14 22:38
文章标签 sprintf sscanf

本文主要是介绍Sprintf 和 sscanf,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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。

这篇关于Sprintf 和 sscanf的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709765

相关文章

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和

printf sprintf fprintf

c语法 1.printf  .   sprintf   .   fprintf 1.1.printf 是把格式字符串输出到标准输出(一般是屏幕,可以重定向)。  1.2.sprintf sprintf,是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目标字符串地址。 1.3fprintf fprintf, 是把格式字符串输出到指定文件设备中,所

C语言sprintf函数使用

1 其函数原型为:int sprintf(char *str, const char *format,...)。 具体用法如下: 基本语法: str:目标字符串的指针,用于存储格式化后的结果。format:格式化字符串,用于指定输出的格式。后续是可变参数,根据格式化字符串的要求提供相应的数据。 格式化说明符: %d:表示整数。%f:表示浮点数。%c:表示单个字符。%s:表示字符串。

sscanf函数的应用

此文所有的实验都是基于下面的程序:  char str[10];  for (int i = 0; i < 10; i++) str[i] = '!';  执行完后str的值为  str = "!!!!!!!!!!"  我们把str的每个字符都初始化为感叹号,当str的值发生变化时,使用printf打印str的值,对比先前的感叹号,这样就可以方便的观察str发生了怎

在用sprintf、sprintf_s的过程中遇到的问题

今天在用sprintf和sprintf_s的过程中遇到了问题,想了挺久才解决的,现在就来记录一下。 先上使用sprintf时出现错误的代码 #include <new>#include <string>int main(){std::string tmp = "ABC";char *p = new char[tmp.size()]();for (std::size_t index = 0;

sscanf的基本用法

省赛在即,特意准备了下sscanf的用法 我觉得学用法直接上例子比较清晰明了,毕竟不是为了考试,没必要看那些无聊的理论 -------------------------------------------------------------------------------------- sscanf()的用法: ------------------------------------

sprintf与sscanf函数

一.sprintf函数 1.功能: 字串格式化命令,主要功能是把格式化的数据写入某个字符串中。 2.头文件:stdio.h 3.例 #include <iostream>#include <stdio.h>using namespace std;int main(){int x;char s[10];cin>>x;sprintf(s,"%d",x);cout<<s<<endl

strcpy,sprintf,memcpy的区别

char *str ="heluiiulo";         char desStr[0]; 1. strcpy 函数操作的对象是字符串 ,完成从源字符串到目的字符串的拷贝 int -> char sprintf(desStr,"%d",56); printf("   desDtr = %s\n",  desStr);

sprintf和snprintf的正确使用

关于sprintf和snprintf的正确使用。 考虑以下有缺陷的例子: void f(const char *p) {     char buf[11]={0};     sprintf(buf,"%10s",p); // very dangerous     printf("%sn",buf); } 不要让格式标记“%10s”误导你。如果p的长度大于10

sprintf、strcpy 及 memcpy 函数的区别

http://jianjiaosun.blog.163.com/blog/static/1361244862010229101318487/ sprintf 可以进行额外的格式化 strcpy 会复制直到出现 '' 为止,可能溢出 strncpy 会复制一个以 '' 结束的字符串,但是如果字符串长度超过指定数量则被截断,但结果可能不包含 '' 表示结束 memcpy 只负责复制指定数量的