scanf printf fscanf fprintf sscanf sprintf 有什么区别

scanf  printf 

scanf: 按照一定的格式从键盘上输入数据

printf : 按照一定的格式把数据打印到屏幕上

格式化的输入输出语句

最基本的输入输出,需要格式化类型,按照类型输出

scanf需要取地址&,printf根据后面的要求按照格式打印

 

fscanf   fprintf

fscanf:按照一定的格式从输入流(文件/stdin)输入数据

fprintf:按照一定的格式向输出流(文件/stdin)输出数据

适用于所有的输入/输出流的格式化输入输出语句

struct S {
	char name[20];
	int age;
	float score;
};

int main() {
	struct S s = { "zhangsan",19,99.50f };
	FILE*pf=fopen("text.txt", "w");//创建并打开文件text.txt文件,进行写操作
	if (NULL == pf) {
		perror("fopen");
		return 1;
	}
	//写文件
	fprintf(pf, "%s %d %f", s.name, s.age, s.score);


	fclose(pf);
	pf = NULL;

}

相对路径下创建了text.txt文件

 

写入了信息

 

struct S {
	char name[20];
	int age;
	float score;
};
int main() {
	struct S s = {0};
	FILE* pf = fopen("text.txt", "r");//打开文件text.txt文件,进行读操作
	if (NULL == pf) {
		perror("fopen");
		return 1;
	}
	//写文件
	fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));

	printf("%s %d %f", s.name, s.age, s.score);
	fclose(pf);
	pf = NULL;

}

读文件

 

sscanf  sprintf

sscanf:从字符串中按照一定的格式读取格式化的数据

sprinft:把格式化的数据按照一定的格式转换成字符串

 sprintf将结构体数据转化为字符串,放进buf数组中,并打印

#include<stdio.h>

struct S {
	char name[20];
	int age;
	float score;
};

int main() {
	
	struct S s = { "zzg",21,85.5f };
	char buf[100] = { 0 };
	//结构体数据转化为字符串
	sprintf(buf, "%s %d %f", s.name, s.age, s.score);
	printf("%s ", buf);
	return 0;
}

字符串还原回结构体的格式

#include<stdio.h>

struct S {
	char name[20];
	int age;
	float score;
};


int main() {
	char buf[100] = { 0 };
	struct S s = { "zzg",21,85.5f };
	struct S tmp = { 0 };
	//结构体数据转化为字符串
	sprintf(buf,"%s %d %f", s.name, s.age, s.score);
	printf("%s ", buf);
	printf("\n");

	//字符串还原成结构体

	sscanf(buf,"%s %d %f", tmp.name, &(tmp.age), &(tmp.score));
	printf("%s %d %f\n", tmp.name, tmp.age, tmp.score);
	return 0;
}

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翻转的乌龟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值