片头
嗨!小伙伴们,在前2篇中,我们分别讲述了C语言:文件操作(上)和 C语言:文件操作(中),今天我们将会学习文件操作(下),准备好了吗?Ready Go ! ! !
在上一篇中,我们讲解了所有关于顺序读写的函数,接下来我们要探讨一个问题:
一、对比一组函数:
scanf/fscanf/sscanf
printf/fprintf/sprintf
它们的作用分别是什么?
需要回答这个问题,首先我们要把它们分成3组, 第1组:scanf 和 printf, 第2组:fscanf 和 fprintf, 第3组是:sscanf 和 sprintf。
①scanf函数:读取数据,按照一定的格式来读取数据,从键盘上获取数据,也就是从标准输入流上读取数据,针对标准输入(键盘)的格式化输入函数(因为我们可以指定格式,比如:读一个整型,读一个字符,或者读一个字符串,可以为%d,%c,%s ,这样的方式来指定格式)
②printf函数:针对标准输出(屏幕)的格式化的输出函数
③fscanf函数:针对所有输入流(标准输入流+文件输入流)的格式化输入函数。我们可以这样理解:fscanf函数包含scanf函数
④fprintf函数:针对所有输出流的格式化输出函数
⑤sscanf函数:从一个字符串里面读取一个格式化的数据
⑥sprintf函数:把格式化的数据转换成字符串
关于前4个函数,我们比较熟悉,接下来我们来讲解一下sscanf函数 和 sprintf函数
1. sprintf函数
sprintf函数是一个C语言的字符串格式化函数,用于将格式化的数据写入字符串中。它的原型定义在<stdio.h>头文件中,函数形式为:
int sprintf(char* str,const char* format,........);
其中,str是一个指向字符数组的指针,用于存储格式化后的字符串;
format是一个格式控制字符串,用于指定输出的格式;
......: 是可选的参数列表,用于提供格式化的数据
sprintf函数的作用是将格式化的数据按照指定的格式写入到字符串str中。它的工作方式与printf函数类似,但不同的是printf函数是将格式化后的数据打印到标准输出流(屏幕),而sprintf函数是将格式化后的数据写入写入到字符数组中。
使用sprintf函数时,可以在格式控制字符串中使用占位符(如:%d、%s等)来表示要输出的数据类型和格式。然后,sprintf函数会根据占位符的类型和格式,将对应的参数值转换成字符串,并将其写入到str指向的字符数组中。
sprintf函数返回写入到字符串中的字符数(不包括字符串的结束标志‘\0’),如果发生错误,则返回负值。
代码如下:
#include<stdio.h>
//创造一个结构体S
struct S {
char name[20];
int age;
float score;
};
int main() {
//创建一个结构体变量s,分别对s的结构体成员进行初始化
struct S s = { "zhangsan",18,85.0f };
char a