- 浏览: 140824 次
文章分类
最新评论
格式化输出是由 5 个printf 函数来处理的。
printf 将格式化数据写到标准输出,fprintf 写至指定的流,dprintf 写至指定的文件描述符,sprintf 将格式化的字符送入数组 buf 中,并在数组尾端自动加一个 null 字节,但该字符不包括在返回值中。由于 sprintf 可能造成由 buf 指向的缓冲区的溢出,所以引入了 snprintf 函数。在该函数中,缓冲区长度是一个显示参数 n,超过缓冲区尾端写的所有字符都会被丢弃。其返回值也不包括结尾的 null 字节。
注意,虽然 dprintf 不处理文件指针,但这里仍然把它包括在处理格式化输出的函数中。使用 dprintf 不需要调用 fdopen 将文件描述符转换成文件指针,而 fprintf 需要。
下列 5 种 printf 族的变体类似于上面的 5 种,但是可变参数表“...”变成了 arg。
执行格式化输入处理的是 3 个 scanf 函数及其可变长度参数表版本。
scanf 族函数用于分析输入字符串,并将字符序列转换成指定类型的变量。在格式之后的各参数包含了变量的地址,用转换结果对这些变量赋值。
标准 I/O 库最终都要调用底层的 I/O 例程,每个标准 I/O 流都有一个与其相关联的文件描述符,可以对一个流调用 fileno 函数来获取其描述符(如果要调用 dup 或 fcntl 等函数,则需要此函数)。
#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); /* 返回值:与该流相关联的文件描述符 */
发表评论
-
打开伪终端设备
2018-07-09 20:50 1248在伪终端概述一节中已对 PTY进行了初步的介绍。尽管 ... -
伪终端概述
2018-06-02 11:05 1533伪终端就是指,一个应用程序看上去像一个终端,但事实上它 ... -
终端窗口大小和 termcap
2018-05-29 22:39 791多数 UNIX 系统都提供了一种跟踪当前终端窗口大小的 ... -
终端规范模式和非规范模式
2018-05-29 00:25 937终端规范模式很简单:发一个读请求,当一行已经输入后,终 ... -
终端标识
2018-05-23 11:18 566尽管控制终端的名字在多数 UNIX 系统上都是 /de ... -
波特率和行控制函数
2018-05-22 07:53 933虽然大多数终端设 ... -
终端属性和选项标志
2018-05-20 07:40 706tcgetattr 和 tcsetattr ... -
终端特殊输入字符
2018-05-17 06:33 807终端支持下表所示的特殊输入字符。 为了更改 ... -
终端 I/O 综述
2018-05-10 07:56 432终端设备可认为是由内核中的终端驱动程序控制的。每个终端 ... -
POSIX 信号量
2018-05-09 00:03 575在XSI IPC通信之信 ... -
XSI IPC 通信之共享存储
2018-04-25 07:18 943在XSI IPC通信之消息队列和XSI IPC通信之信 ... -
XSI IPC通信之信号量
2018-04-17 23:38 612在XSI IPC通信之消 ... -
XSI IPC通信之消息队列
2018-04-15 10:54 490消息队列是消息的链接表,存储在内核中,由消息队列标识符 ... -
XSI IPC 相似特征介绍
2018-02-08 23:48 479有 3 种称作 XSI IPC ... -
IPC 通信之 FIFO
2018-02-06 22:55 412FIFO 也被称为命名管道,未命名的管道只能在两个相关 ... -
IPC 通信之管道
2018-01-30 22:22 383管道是 UNIX 系统 IPC 的最古老但也是最常用的 ... -
readv/writev 函数及存储映射 I/O
2018-01-19 00:57 878readv 和 writev 函数可用于在一次函数调用 ... -
POSIX 异步 I/O
2018-01-16 21:33 449POSIX 异步 I/O 接口为对不同类型的文件进行异 ... -
fcntl 记录锁
2018-01-06 23:48 584记录锁的功能是:当有进程正在读或修改文件的某个部分时, ... -
守护进程惯例
2018-01-06 23:52 432UNIX 系统中,守护进程遵循下列通用惯例。 ...
相关推荐
格式化输入输出函数printf()和scanf() printf()函数的功能是:向终端输出若干个任意指定类型的数据。格式:printf("格式控制",参数表列)。 printf()函数的格式控制可分为三种情况: 1. 不含有“%”的普通字符串。...
在C++中,可以通过`get()`和`put()`函数来实现,或者使用格式化输入/输出函数,如`getline()`和`printf()`。此外,还可以使用操纵符如`setprecision()`来控制浮点数的输出精度。 2.4 继承 虽然文件I/O是本章的一个...
本文将深入解析C语言标准输入输出函数,特别是格式化输入输出函数printf()和scanf(),以及它们在TurboC2.0环境下的应用。 ### 1.1 标准输入输出函数 #### 1.1.1 格式化输入输出函数 **printf()函数**是格式化输出...
在编程领域,字符串和格式化输入输出是两个关键的概念,特别是在C++和其他低级语言中。这个主题主要涉及如何创建、操作以及有效地显示文本数据。在这个"字符串和格式化输入输出.zip"压缩包中,可能包含的是一个教学...
在本节中,我们将详细介绍MATLAB中的输入输出函数,包括文本读取、文件操作、二进制I/O函数和格式化I/O函数等。 文本读取函数 MATLAB提供了多种文本读取函数,以读取文本文件中的数据。其中,textread函数是其中之...
3. **格式化输入输出函数**:如`printf`用于格式化输出到标准输出或文件,`scanf`用于格式化输入,`fprintf`和`fscanf`则分别用于向文件写入格式化输出和从文件读取格式化输入。 4. **字符输入输出函数**:如`fgetc...
格式化 I/O 函数是 Matlab 中的一种基本函数,用于处理格式化的数据输入/输出。Matlab 提供了多种格式化 I/O 函数,例如 fprintf 函数和 fscanf 函数。 118.6.1 fprintf 函数 fprintf 函数是 Matlab 中的一个基本...
这些设备通常配备有用于I/O操作的各种接口,如GPIO(通用输入输出)、模拟输入/输出、数字输入/输出等。 2. **建立I/O连接**:在LabVIEW中,使用DAQmx(Data Acquisition)库来配置和管理硬件资源。DAQmx提供了一套...
- **`fscanf` 函数**:用于格式化输入。 - 语法:`A = fscanf(fid, format)` - **`fgetl` 函数**:用于读取一行文本。 - 语法:`str = fgetl(fid)` #### 8.7 格式化和二进制 I/O 函数的比较 格式化 I/O 函数更...
在MATLAB中,I/O(输入/输出)操作是编程过程中不可或缺的一部分,它涉及到数据的读取、写入以及与其他程序或硬件设备的交互。MATLAB提供了丰富的函数库来支持这些功能,使得用户能够轻松地处理文件和数据流。下面...
非格式化输入输出是C语言中最基础的I/O操作,它们在处理简单的字符输入和输出时非常有用。理解这些函数的工作原理对于编写简单的控制台应用程序至关重要。通过熟练掌握`getchar`、`getche`、`getch`、`getc`、`...
Labview File I/O Toolbox 是一个针对Labview编程环境设计的强大工具箱,专用于处理文件输入输出操作。这个工具箱特别适合初学者,因为它提供了一种简单易懂的状态机模式,帮助用户有效地管理和执行各种文件读写任务...
### C语言格式化输出详细说明 #### 一、概述 ...总之,在使用`printf`函数或其他格式化输出函数时,理解各种数据类型的支持及其对应的格式化说明符至关重要。希望本文对你理解C语言中的格式化输出有所帮助。
`scanf`和`printf`则提供了一种格式化输入输出的方式。 3. **文件描述符**:在Linux中,一切皆文件,包括设备。每个打开的文件或设备都有一个唯一的文件描述符。`open`函数用于打开文件并返回文件描述符,`read`和`...
然而,实际的C标准I/O库还包括更多的功能,如错误处理、流的定位、格式化输入输出等,这些功能在这个简化的实现中并未涉及。为了完全复现C标准I/O库的功能,还需要实现诸如`fclose`、`fprintf`、`fscanf`等更多函数...
在编程领域,文件输入输出(File Input/Output,简称File I/O)是处理数据和程序持久化存储的关键技术。在给定的标题“fileIO_sample.c_fileI/O_”和描述“file input and output”中,我们可以理解这是一个关于...
C++是一种强大的面向对象编程语言,它提供了许多高级特性,如继承、文件输入/输出(File I/O)和类(Classes)。在这个主题中,我们将深入探讨这三个关键概念,并通过具体的例子来理解它们。 首先,让我们从继承...
本资料"MATLAB编程-输入输出函数.pdf"显然是针对这一主题进行深入探讨的,旨在帮助用户更好地理解和掌握MATLAB中的I/O操作。 MATLAB提供了多种输入输出函数,它们分为以下几类: 1. **用户交互输入**: - `input`...
本文将详细探讨C++中的几个主要库函数类别:缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数以及字符串操作函数。 1. **缓冲区操作函数** - `memchr`:这个函数用于在内存块...