`

I/O 格式化输入和输出函数

阅读更多
    格式化输出是由 5 个printf 函数来处理的。
#include <stdio.h>
int printf(const char *restrict format, ...);
int fprintf(FILE *restrict fp, const char *restrict format, ...);
int dprintf(int fd, const char *restrict format, ...);
               /* 返回值:若成功,都返回输出字符数;若输出出错,都返回负值 */
int sprintf(char *restrict buf, const char *restrict format, ...);
               /* 返回值:若成功,返回存入数组的字符数;若编码出错,返回负值 */
int snprintf(char *restrict buf, size_t n, const char *restrict format, ...);
        /* 返回值:若缓冲区足够大,返回将要存入数组的字符数;若编码出错,返回负值 */

    printf 将格式化数据写到标准输出,fprintf 写至指定的流,dprintf 写至指定的文件描述符,sprintf 将格式化的字符送入数组 buf 中,并在数组尾端自动加一个 null 字节,但该字符不包括在返回值中。由于 sprintf 可能造成由 buf 指向的缓冲区的溢出,所以引入了 snprintf 函数。在该函数中,缓冲区长度是一个显示参数 n,超过缓冲区尾端写的所有字符都会被丢弃。其返回值也不包括结尾的 null 字节。
    注意,虽然 dprintf 不处理文件指针,但这里仍然把它包括在处理格式化输出的函数中。使用 dprintf 不需要调用 fdopen 将文件描述符转换成文件指针,而 fprintf 需要。
    下列 5 种 printf 族的变体类似于上面的 5 种,但是可变参数表“...”变成了 arg。
#include <stdarg.h>
#include <stdio.h>
int vprintf(const char *restrict format, va_list arg);
int vfprintf(FILE *restrict fp, const char *restrict format, va_list arg);
int vdprintf(int fd, const char *restrict format, va_list arg);
               /* 返回值:若成功,都返回输出字符数;若输出出错,都返回负值 */
int vsprintf(char *restrict buf, const char *restrict format, va_list arg);
               /* 返回值:若成功,返回存入数组的字符数;若编码出错,返回负值 */
int vsnprintf(char *restrict buf, size_t n, const char *restrict format, va_list arg);
        /* 返回值:若缓冲区足够大,返回将要存入数组的字符数;若编码出错,返回负值 */

    执行格式化输入处理的是 3 个 scanf 函数及其可变长度参数表版本。
#include <stdio.h>
int scanf(const char *restrict format, ...);
int fscanf(FILE *restrict fp, const char *restrict format, ...);
int sscanf(const char *restrict buf, const char *restrict format, ...);
    /* 返回值:赋值的输入项数;若输入出错或在任一转换前已到达文件尾,都返回 EOF */

#include <stdarg.h>
#include <stdio.h>
int vscanf(const char *restrict format, va_list arg);
int vfscanf(FILE *restrict fp, const char *restrict format, va_list arg);
int vsscanf(const char *restrict buf, const char *restrict format, va_list arg);
    /* 返回值:赋值的输入项数;若输入出错或在任一转换前已到达文件尾,都返回 EOF */

    scanf 族函数用于分析输入字符串,并将字符序列转换成指定类型的变量。在格式之后的各参数包含了变量的地址,用转换结果对这些变量赋值。
    标准 I/O 库最终都要调用底层的 I/O 例程,每个标准 I/O 流都有一个与其相关联的文件描述符,可以对一个流调用 fileno 函数来获取其描述符(如果要调用 dup 或 fcntl 等函数,则需要此函数)。
#include <stdio.h>
int fileno(FILE *fp);    /* 返回值:与该流相关联的文件描述符 */

分享到:
评论

相关推荐

    C语言的格式化输入输出PPT课件.pptx

    格式化输入输出函数printf()和scanf() printf()函数的功能是:向终端输出若干个任意指定类型的数据。格式:printf("格式控制",参数表列)。 printf()函数的格式控制可分为三种情况: 1. 不含有“%”的普通字符串。...

    C++ I/O Streams ppt

    在C++中,可以通过`get()`和`put()`函数来实现,或者使用格式化输入/输出函数,如`getline()`和`printf()`。此外,还可以使用操纵符如`setprecision()`来控制浮点数的输出精度。 2.4 继承 虽然文件I/O是本章的一个...

    C语言标准输入输出函数大全

    本文将深入解析C语言标准输入输出函数,特别是格式化输入输出函数printf()和scanf(),以及它们在TurboC2.0环境下的应用。 ### 1.1 标准输入输出函数 #### 1.1.1 格式化输入输出函数 **printf()函数**是格式化输出...

    字符串和格式化输入输出.zip

    在编程领域,字符串和格式化输入输出是两个关键的概念,特别是在C++和其他低级语言中。这个主题主要涉及如何创建、操作以及有效地显示文本数据。在这个"字符串和格式化输入输出.zip"压缩包中,可能包含的是一个教学...

    MATLAB编程-输入输出函数.pdf

    在本节中,我们将详细介绍MATLAB中的输入输出函数,包括文本读取、文件操作、二进制I/O函数和格式化I/O函数等。 文本读取函数 MATLAB提供了多种文本读取函数,以读取文本文件中的数据。其中,textread函数是其中之...

    掌握C语言的基石:标准I/O库使用指南

    3. **格式化输入输出函数**:如`printf`用于格式化输出到标准输出或文件,`scanf`用于格式化输入,`fprintf`和`fscanf`则分别用于向文件写入格式化输出和从文件读取格式化输入。 4. **字符输入输出函数**:如`fgetc...

    Matlab教学资料:第八章输入输出函数.doc

    格式化 I/O 函数是 Matlab 中的一种基本函数,用于处理格式化的数据输入/输出。Matlab 提供了多种格式化 I/O 函数,例如 fprintf 函数和 fscanf 函数。 118.6.1 fprintf 函数 fprintf 函数是 Matlab 中的一个基本...

    利用LabVIEW RT(实时)模块对I/O编程(Flash格式).rar

    这些设备通常配备有用于I/O操作的各种接口,如GPIO(通用输入输出)、模拟输入/输出、数字输入/输出等。 2. **建立I/O连接**:在LabVIEW中,使用DAQmx(Data Acquisition)库来配置和管理硬件资源。DAQmx提供了一套...

    matlab.rar_I/O

    在MATLAB中,I/O(输入/输出)操作是编程过程中不可或缺的一部分,它涉及到数据的读取、写入以及与其他程序或硬件设备的交互。MATLAB提供了丰富的函数库来支持这些功能,使得用户能够轻松地处理文件和数据流。下面...

    c语言 对非格式化输入输出的理解

    非格式化输入输出是C语言中最基础的I/O操作,它们在处理简单的字符输入和输出时非常有用。理解这些函数的工作原理对于编写简单的控制台应用程序至关重要。通过熟练掌握`getchar`、`getche`、`getch`、`getc`、`...

    I/O流应用,数据》》》》》

    通过以上案例分析,我们可以了解到 C++ 中 I/O 流的应用非常广泛,不仅可以实现基本的数据输入输出,还可以通过流类库的各种成员函数实现复杂的数据处理需求。对于初学者而言,理解这些基本概念并能够熟练运用是非常...

    Labview File I/O Toolbox

    Labview File I/O Toolbox 是一个针对Labview编程环境设计的强大工具箱,专用于处理文件输入输出操作。这个工具箱特别适合初学者,因为它提供了一种简单易懂的状态机模式,帮助用户有效地管理和执行各种文件读写任务...

    C语言格式化输出详细说明

    ### C语言格式化输出详细说明 #### 一、概述 ...总之,在使用`printf`函数或其他格式化输出函数时,理解各种数据类型的支持及其对应的格式化说明符至关重要。希望本文对你理解C语言中的格式化输出有所帮助。

    输入输出队列-LinuxC

    `scanf`和`printf`则提供了一种格式化输入输出的方式。 3. **文件描述符**:在Linux中,一切皆文件,包括设备。每个打开的文件或设备都有一个唯一的文件描述符。`open`函数用于打开文件并返回文件描述符,`read`和`...

    C 标准I/O库的粗略实现教程

    然而,实际的C标准I/O库还包括更多的功能,如错误处理、流的定位、格式化输入输出等,这些功能在这个简化的实现中并未涉及。为了完全复现C标准I/O库的功能,还需要实现诸如`fclose`、`fprintf`、`fscanf`等更多函数...

    fileIO_sample.c_fileI/O_

    在编程领域,文件输入输出(File Input/Output,简称File I/O)是处理数据和程序持久化存储的关键技术。在给定的标题“fileIO_sample.c_fileI/O_”和描述“file input and output”中,我们可以理解这是一个关于...

    c++ Inheritance, File I/O, Classes例子(含格式输出处理)

    C++是一种强大的面向对象编程语言,它提供了许多高级特性,如继承、文件输入/输出(File I/O)和类(Classes)。在这个主题中,我们将深入探讨这三个关键概念,并通过具体的例子来理解它们。 首先,让我们从继承...

    MATLAB编程-输入输出函数.pdf.zip

    本资料"MATLAB编程-输入输出函数.pdf"显然是针对这一主题进行深入探讨的,旨在帮助用户更好地理解和掌握MATLAB中的I/O操作。 MATLAB提供了多种输入输出函数,它们分为以下几类: 1. **用户交互输入**: - `input`...

    C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数、字符串操作函数

    本文将详细探讨C++中的几个主要库函数类别:缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数以及字符串操作函数。 1. **缓冲区操作函数** - `memchr`:这个函数用于在内存块...

Global site tag (gtag.js) - Google Analytics