区分和介绍: printf,scanf,fprintf,fscanf,sprintf,sscanf,什么是流,标准流有哪些。

我们先来逐个介绍一下:流这个概念,流就是外部设备和程序之间的桥梁,作为程序员我们不需要知道流是怎么将数据输入,输出到外部设备的,但是我们要知道流怎么建立和程序的联系。

标准流有:

标准输入流:stdin

标准输出流:stdout

标准错误流:stderr

类型都是FILE* 

除了以上的标准流以外,还有文件流,其实就是我们的文件信息区,类型也是FILE*

下面的一些函数就是运用流来调用的,有标准流,文件流,和所有流。


printf:格式化的输出函数(标准流)

 返回输出数据字符长度。

scanf:格式化的输入函数(标准流)

 返回输入数据的个数。

fprintf:格式化的输出函数(所有流)

举例1:标准流下

int main()
{
	int a = 10;
	fprintf(stdout, "%d", a);
	//stdout标准输出流,也就是屏幕

}	

运行结果:

举例2:文件流下

int main()
{
	//打开文件
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;

	}
	//使用文件
	int a = 0;
	char b = 'z';

	fprintf(pf, "%d %c", a, b);
	//fprintf输出,从程序输出。
	//pf文件流从程序输入到文件。

	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

 运行结果:

返回:输出到目的地的字符数

fscanf:格式化的输入函数(所有流)

 举例:标准流

int main()
{
	int a = 0;
	char b = 0;

	fscanf(stdin, "%d %c", &a, &b);
	//stdin标准输入流 也就是键盘。

	//检验
	printf("输出是:%d %c", a, b);

	return 0;
}

运行结果:

 举例2:文件流

int main()
{
	//打开文件
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;

	}
	//使用文件
	int a = 0;
	int b = 0;
	//从文件里面输入
	fscanf(pf, "%d %c", &a, &b);


	//输出检验
	printf("输出是:%d %c", a, b);

	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

运行结果:

sscanf:把一个字符串转化为格式化数据

注意:不是针对流的

 举例:

int main()
{
	char str[100] = "20 z zhangxuefeng";

	int a = 0;
	char b = 0;
	char arr[100];
	sscanf(str, "%d %c %s", &a, &b, arr);

	//检验
	printf("%d %c %s", a, b, arr);



	return 0;
}

运行结果:

 

sprintf:把一个格式化的数据转化为一个字符串

 

举例:

int main()
{
	char str[100] = { 0 };

	int a = 20;
	char b = 'z';
	char arr[100]="zhangxuefeng";


	sprintf(str, "%d %c %s", a, b, arr);

	//检验
	printf("%s", str);



	return 0;
}

运行结果:

综合对比:

返回值:printf,fprintf,sprintf 的返回值都是一样的,就输出数据所占的字符长度。

scanf,sscanf,fscanf 的返回值都是输入数据的个数。

参数:最后的格式化数据都是一样的。

fprintf和fscanf 第一个参数是流。

sprintf和sscanf的第一个参数是字符串类型,或者字符指针类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小峰同学&&&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值