一:函数的对比
scanf:从标准输入流中读取格式化数据(通常是键盘)
printf:将格式化数据输出到标准输出流(通常是屏幕)
fscanf:适用于所有输入流的格式化输入函数(一般从指定的文件流中读取格式化的数据)
fprintf:适用于所有输出流的格式化输出函数(一般将格式化的数据写入到指定的文件流中)
sscanf:从字符串中读取格式化的数据
sprintf:从字符串中读取格式化的数据
标准输入流:即从键盘上输入的数据流
标准输出流:从屏幕上输出的数据流
所有输入流:除了键盘,还可以读取文件(等流)里的数据
所有输出流:除了屏幕,还可以写在文件(等流)里的数据
二:函数的使用
1,printf函数
参数解释:
const char *format
:这是一个指向格式字符串的指针。格式字符串定义了如何格式化后续的参数。格式字符串可以包含普通字符和格式说明符(以%
开头的子序列)。...
:这表示函数接受可变数量的参数。这些参数的类型和数量由格式字符串决定
返回值:
- 成功写入:当写入操作成功时,函数会返回成功写入的字符总数。这通常是一个非负整数,表示成功写入了多少个字符。
- 写入错误:如果发生写入错误(例如,磁盘空间不足、文件无法访问等),则“错误指示器”(ferror)会被设置,并且函数会返回一个负数。这个负数可能是一个特定的错误代码,用于指示发生了哪种类型的错误。具体的错误代码和含义可能因编程语言和库的不同而有所差异。
函数使用展示:
将一个结构体的内容打印到屏幕上
2,scanf函数
参数解释:
format
:一个格式字符串,它定义了应该如何读取输入数据。格式字符串可以包含各种格式说明符(如%d
用于整数,%f
用于浮点数,%s
用于字符串等)。...
(可变参数):这些参数是指向存储输入数据的变量的指针。它们的类型和数量必须与格式字符串中的格式说明符相匹配。
返回值:
-
“On success, the function returns the number of items of the argument list successfully filled.”
- 当函数成功执行时,它会返回成功填充的参数列表中的项目数量。
-
“This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.”
- 这个数量可能与预期的项目数量相匹配,但由于匹配失败、读取错误或达到文件末尾,它可能会更少(甚至为零)。
- 匹配失败:可能是输入数据与期望的格式或模式不匹配。
- 读取错误:可能是由于文件读取问题,例如文件损坏、磁盘错误等。
- 达到文件末尾:当读取到文件的末尾时,可能没有足够的项目来填充参数列表。
- 这个数量可能与预期的项目数量相匹配,但由于匹配失败、读取错误或达到文件末尾,它可能会更少(甚至为零)。
函数使用展示:
从键盘上读取数据放进结构体里
3,fprintf函数
参数解释:
FILE *stream
:这是一个指向FILE
对象的指针,它代表了一个打开的文件或其他输出流(例如标准输出stdout
)。const char *format
:这是一个 C 字符串,指定了如何格式化后续的参数。字符串中可以包含普通字符和格式说明符(以%
开头的子序列)。...
:这表示函数接受可变数量的参数。这些参数的数量和类型由format
字符串中的格式说明符确定。
返回值:
fprintf
函数返回一个整数,表示成功写入的字符数(不包括字符串的终止字符)。如果出现错误,返回值可能是一个负数。
函数使用展示:
将一个结构体的内容打印到文件名为data.txt 的文件上
4,fscanf函数
参数解释:
FILE *stream
:这是一个指向要读取数据的文件流的指针。通常,这个文件流是通过fopen
函数打开的。const char *format
:这是一个格式字符串,它定义了应该如何读取和解析数据。格式字符串中的每个格式说明符都对应一个额外的参数,这些参数应该指向已经分配了空间的变量,用于存储从文件流中读取的数据。
返回值:
-
On success, the function returns the number of items of the argument list successfully filled.
- 当函数成功执行时,它会返回成功填充的参数列表中的项目数量。
-
This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.
-
这个数量可能与预期的项目数量相匹配,但由于匹配失败、读取错误或达到文件末尾,它也可能更少(甚至为零)。
-
Matching failure: 当尝试匹配某些内容(例如,从输入中查找特定的模式或字符串)时,可能会失败。这可能是因为输入数据与预期不匹配。
-
Reading error: 在读取输入数据时可能会出现错误,例如,由于磁盘问题、文件损坏或网络问题。
-
Reach of the end-of-file: 如果函数试图读取文件,并且已经到达了文件的末尾,那么它将停止读取,并且返回的项目数量可能会少于预期。
-
-
If a reading error happens or the end-of-file is reached while reading, the proper indicator is set (feof or ferror).
- 如果在读取过程中发生读取错误或到达文件末尾,将设置适当的指示器(例如,
feof
或`ferror
- 如果在读取过程中发生读取错误或到达文件末尾,将设置适当的指示器(例如,
函数使用展示:
从一个文件名为data.txt 的文件中读取内容放到结构体上
5,sprintf函数
参数解释:
char *str
:这是一个指向将要存储格式化字符串的缓冲区的指针。这个缓冲区必须足够大,以容纳由format
参数和后续参数指定的文本。const char *format
:这是一个格式字符串,指定了如何格式化后续参数。这个字符串中的格式说明符(如%d
、%s
等)被后续参数的值所替换。...
:这是一个可变参数列表,表示sprintf
函数可以接受任意数量和类型的参数,这些参数的数量和类型由format
字符串决定。
返回值:
- 当操作或函数成功执行时,它会返回已经写入的字符的总数。这个数值表示你向某个地方(可能是内存、文件等)写入了多少字符。
函数使用展示:
将一个结构体的内容写入一个字符串
6,sscanf函数
参数解释;
s
:这是你要从中读取数据的字符串。format
:这是一个格式字符串,它指定了如何解析s
中的数据。这个格式字符串可以包含普通的字符(它们必须匹配s
中的字符)以及格式说明符(它们告诉sscanf
如何解析和存储数据)。...
:这是一个可变参数列表,它提供了存储从s
中读取的数据的位置。这些参数应该是指向已分配对象的指针,这些对象的类型应与format
字符串中的相应格式说明符相匹配。
返回值;
函数在执行成功时的返回行为。它可能返回成功处理或填充的参数数量,这个数量可能与预期的数量相匹配,也可能更少。如果在处理数据之前发生输入错误,函数会返回EOF。
函数使用展示:
将一个字符串的内容写入一个结构体