C语言格式化输入输出函数的比较(printf、fprintf、sprintf、scanf、fscanf、sscanf)

printf、fprintf、sprintf的区别

printf:

int printf ( const char * format, … );

针对标准输出的格式化输出语句(将格式化数据打印到标准输出) - stdout(一般是显示器)

fprintf:

int fprintf ( FILE * stream, const char * format, … );

针对所有输出流的格式化输出语句(将格式化数据写入流)- stdout、文件

sprintf:

int sprintf ( char * str, const char * format, … );

把一个格式化的数据,转换成字符串(将格式化数据写入字符串)

返回值:如果成功,将返回写入的字符总数。此计数不包括自动追加到字符串末尾的额外空字符(即不包括\0)。 如果失败,将返回一个负数。

struct S
{
	int a;
	char arr[6];
	float b;
};
int main()
{
	struct S s = { 10,"abcde",3.14f };
	char buf[20] = { 0 };
    //将结构体数据写入到buf中,最终以字符串形式打印,返回值是buf总字符串长度
	int len = sprintf(buf, "%d %s %f", s.a, s.arr, s.b);
	printf("%s\n", buf);	//10 abcde 3.140000
	printf("%d\n", len);	//17
	return 0;
}

scanf、fscanf、sscanf的区别

sacanf:

int scanf ( const char * format, … );

针对标准输入的格式化的输入语句(从标准输入中读取格式化数据) - stdin(一般是键盘)

fscanf:

int fscanf ( FILE * stream, const char * format, … );

针对所有输入流的格式化的输入语句(从流中读取格式化数据) - stdin/文件

sscanf:

int sscanf ( const char * s, const char * format, …);

从一个字符串中读取一个格式化的数据(从字符串中读取格式化数据)

返回值:如果成功,该函数将返回参数列表中成功填充的项数。该计数可以与预期的项目数相匹配,或者在匹配失败的情况下小于预期的项目数(甚至为零)。 如果在成功解释任何数据之前输入失败,将返回EOF。

struct S
{
	int a;
	char arr[6];
	float b;
};
int main()
{
    char buf[20] = {"10 abced 3.14f"};
	struct S t = { 0 };
    //将字符串buf格式化读取到结构体t中,返回值是成功读取的项数
	int len2 = sscanf(buf, "%d %s %f", &(t.a), t.arr, &(t.b));
	printf("%d %s %f\n", t.a, t.arr, t.b);	//10 abcde 3.140000
	printf("%d\n", len2);		//3
	return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值