【C语言】格式化字符串printf()、sprintf()、scanf()、sscanf()函数详解

(一)stdio.h头文件

stdio.h1头文件提供了(通用)文件操作、提供窄字符输入输出的函数

参数说明:

  • 形参中的…代表不定参(参数个数不唯一)
  • %d %x %f …是转换指定符

(二)printf 和 sprintf 函数(C99)

(1)printf() 函数详解

int printf( const char *format, ... );

例:下面printf函数就使用了三个参数。

#include <stdio.h>
int main()
{
    
    
	int a = 10, b = 20;
	int len = printf("a = %d, b = %d\n", a, b);
	printf("len = %d\n", len);
}

结果:
在这里插入图片描述

printf()功能

从printf给定的参数加载数据,将其转成字符串,将结果写入stdout(标准输出:屏幕)。(当我们看到的a = 10, b = 20 其实是一个字符串,并非真实的整型a和b)

printf()返回值

返回输出的字符串的长度

(2)sprintf() 函数详解

int sprintf( char *buffer, const char *format, ... );

例:sprintf()将字符串 “hello,world 1024” 输出到buffer缓冲区中

#include <stdio.h>
int main()
{
    
    
	char buffer[128] = {
    
    0};
	int a = 1024;
	int len = sprintf(buffer,"hello,world %d", a);
	//结果:buffer中存放"hello,world 1024"的字符串
	printf("buffer %s\n", buffer);
	printf("len = %d\n", len);
}

结果:
在这里插入图片描述

sprintf() 功能

同理,对sprintf函数也一样,从给定的参数加载数据,转成字符串后,输出到buffer缓冲区中。

sprintf() 返回值:

返回输出的字符串的长度

(三)scanf 和 sscanf 函数(C99)

(1)scanf() 函数详解

int scanf( const char* format, ... );

例:下面scanf函数就使用了三个参数。

#include <stdio.h>
int main()
{
    
    
	int a = 0, b = 0;
	int count = scanf("%d %d", &a, &b);
	printf("count = %d\n", count);
}

结果:
在这里插入图片描述

scanf()功能

scanf函数从stdin(标准输入:键盘)获取数据,经转译,存储到stdin行输入缓冲区中。
(输入时回显的原因,系统将输入缓冲区的内容输出在(stdout行缓冲区)屏幕上)

scanf()返回值

成功:成功赋值的接收参数的数量
失败:EOF

(2)sscanf() 函数详解

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

例:sscanf()把buffer缓冲区中的数据输入到行输入缓冲区

#include <stdio.h>
int main()
{
    
    
	int a = 0, b = 0;
	char buffer[] = {
    
    "10 20"};
	int count = sscanf(buffer,"%d %d", &a, &b);
	printf("count = %d\n", count);
}

结果:
在这里插入图片描述

sscanf()功能

sscanf函数从buffer缓冲区获取数据,经转译,存储到stdin行输入缓冲区中。

sscanf()返回值:

成功:成功赋值的接收参数的数量
失败:EOF

参考文献 :


  1. https://zh.cppreference.com/w/c/io ↩︎

猜你喜欢

转载自blog.csdn.net/xiaoxiaoguailou/article/details/121306953