`

Linux/Unix C 编程 标准I/O函数(2):输入输出函数

阅读更多
#include <stdio.h>
输入函数:int getc(FILE *fp), int fgetc(FILE *fp), int getchar(void), char *fgets(char * buf, FILE *fp), char *gets(char *buf),size_t fread(void *ptr, size_t szie, size_t nobj, FILE *fp)。
输出函数:int putc(int c, FILE *fp), int fputc(int c, FILE *fp), int putchar(int c),     int fputs(const char *str, FILE *fp), int puts(const char *str),size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)。

其中:
getc,fgetc,getchar,putc,fputc,putchar 函数用于一次一个字符输入输出。

fgets,gets,fputs,puts 用于一次一行输入输出。

fread, fwrite 用于读写一个二进制数组或者一个结构。

函数 getchar==getc(stdin),putchar==putc(c, stdout)。
getc,putc 两个函数可实现为宏,fgetc 和 fputc 不能实现为宏。

gets 是不安全的,原因如果读到的字符数如果大于缓冲区长度,因为不能设置缓冲区长度,因此可能会溢出,故不推荐使用。

puts 是安全的,将一个以null结尾的字符串写到标准输出后再将一个换行符写到标准输出。

fgets 必须指定缓冲区长度,读取(指定长度-1)个的字符串,以null字符结尾。函数将读到下一个换行符为止,但不会读取超过(指定长度-1)个字符,如果一次无法读完一行,则返回的不是一行,而是(指定长度-1)个字符,再次调用fgets将会从未读字符位置读取。

fputs 将一个以null结尾的字符串写到指定流,null不写出。通常 null 前面是一个换行符,但并不要求一定是。

fread,fwrite 读写二进制数组或者结构体,如:

将一数组中的第2-5个元素写入文件:
float data[10];

fwrite(&data[2], sizeof(float), 4, fp); // &data[2]开始写入的位置, sizeof(float)要写入每个数据长度,4为要写入的数量。。。

读取一个结构体:
struct{
int count;
char szmsg[1024];
}item;

fread(&item, sizeof(item), 1, fp ); // &item 结构体指针,长度,数量。。。

使用标准I/O库的输入输出函数由于数据量的大小,可能效率不高,如 fgets和fputs 要在内核和标准I/O之间复制一次数据,然后再在标准I/O和用户程序之间再复制一次。因此可考虑使用其它快速I/O库版本。
分享到:
评论

相关推荐

    linux/unix系统编程手册(下)

    《Linux/Unix系统编程手册(下)》是深入理解Linux和Unix操作系统内核与系统编程不可或缺的参考书籍。这本书详细阐述了在这些操作系统环境下进行程序设计、系统调用、网络编程以及文件操作等方面的关键概念和技术。 ...

    Linux/UNIX系统编程手册

    4. **文件和I/O流**:涵盖标准输入/输出(stdio)库和低级别的文件操作。了解fdopen(), fopen(), fseek(), fclose()等函数以及缓冲机制。 5. **内存管理**:包括动态内存分配(malloc, calloc, realloc, free)和...

    exercise_one_due2v3_Linux/Unix编程_

    4. **文件I/O**:理解文件描述符、标准输入/输出和重定向,掌握open(), read(), write(), close()等函数。 5. **权限和文件系统**:学习Linux的文件权限模型,理解用户、组和权限设置,以及如何使用chown(), chmod...

    UNIX环境高级编程_Linux/Unix编程_

    此外,还会涵盖标准输入、输出和错误流,以及重定向和管道等I/O功能。 二、进程管理 进程是UNIX/Linux系统中的基本执行单元。书中会详细介绍进程的创建(fork)、执行(exec)和退出,以及进程间通信(IPC)的方法...

    Linux/Unix系统编程手册 源代码

    7. **标准输入输出与重定向**:标准输入(`stdin`)、标准输出(`stdout`)、标准错误(`stderr`)以及I/O重定向和管道(`, `&gt;`, `|`)是命令行交互的基础。 8. **系统调用与库函数**:区分系统调用(如`write()`)...

    Linux/UNIX系统编程手册的支持代码

    在Linux/UNIX环境下,与用户交互通常涉及标准输入输出,如从`stdin`读取数据。`get_num.c`可能是对`scanf()`、`fgets()`等函数的使用演示,或者它可能包含了更复杂的输入验证和错误处理逻辑。 此外,提到的“第8.2...

    LinuxC_C语言_Linux/Unix编程_Dot._

    4. **标准I/O库和文件操作**:掌握C语言中的标准输入输出和文件操作函数,如fopen、fclose、fgets、fprintf等。 5. **进程和线程**:理解进程的概念,学习fork、exec、wait系列函数,以及多线程编程的原理和pthread...

    linux/unix shell编程详解

    在IT领域,Linux/Unix Shell编程是系统管理员和开发者日常工作中不可或缺的一部分。Shell作为操作系统与用户交互的接口,提供了一种高效的方式来自动化任务,执行批处理操作,以及编写复杂的脚本。本文将深入探讨...

    Linux / Unix SHELL编程

    Linux/Unix Shell编程是操作系统与用户交互的重要方式,它是一种脚本语言,允许用户通过命令行界面执行系统级任务和自动化工作流程。Shell不仅提供基本的命令行操作,还可以编写复杂的脚本来处理文件、目录、进程和...

    精通UNIX下C语言编程与项目实践+源代码+笔记.zip_C语言项目linux_Linux/Unix编程_Linux下的c语言开

    1. **标准输入/输出(stdin, stdout, stderr)**:这是C程序与用户交互的主要方式。在UNIX中,程序可以重定向这些流以实现非交互式或批处理操作。 2. **头文件和预处理器**:在UNIX系统中,C程序经常使用`&lt;stdio.h&gt;...

    python3.7,linux/unix

    5. **改进的行缓冲**:Python 3.7中的文件对象现在默认使用行缓冲,这使得在交互式脚本中处理标准输入和输出更有效率。 6. **垃圾回收**:Python 3.7在垃圾回收机制上进行了优化,提升了程序的内存效率。 7. **...

    linux/unix shell 编程指南

    Linux/Unix Shell编程指南是针对操作系统中的命令行接口——Shell的一种编程手册,它涵盖了如何编写脚本、自动化任务以及管理操作系统资源的基本概念。Shell编程在系统管理、软件开发和日常任务自动化中扮演着重要...

    xuqu4.rar_Linux/Unix编程_expressionnh2

    标题中的"xuqu4.rar_Linux/Unix编程_expressionnh2"表明这是一个与Linux或Unix操作系统相关的编程资源,可能是一个代码库或者教程,重点是“expressionnh2”,这可能是某种特定的表达式处理或编程概念的缩写。...

    Linux-UNIX系统编程手册中文版.rar

    1. **文件I/O**:包括标准输入/输出流,打开、关闭文件,读写文件,以及错误处理。书中会介绍如何使用fopen, fclose, fread, fwrite等函数进行文件操作,并讲解缓冲机制和文件定位。 2. **进程管理**:涵盖进程创建...

    LINUX和UNIX基础编程

    例如,`stdio.h`提供了输入输出功能,`stdlib.h`包含了内存管理和数学函数,`unistd.h`则包含了一些操作系统相关的接口。 此外,还应学习如何编写shell脚本,如Bash。Shell脚本允许自动化重复的任务,结合条件语句...

    usb_Linux/Unix编程_

    总结来说,USB在Linux/Unix编程主要涉及USB协议的理解、设备驱动开发以及使用内核或用户空间库与设备通信。理解这些知识点对于开发和调试与USB设备相关的应用程序至关重要。压缩包中的"usb"文件可能是USB驱动的源...

    tty_Linux/Unix编程_

    本教程将深入探讨TTY Linux/Unix编程,特别是通过分析TTY模块的源码来理解其工作原理。 首先,TTY驱动程序是Linux内核中的一个关键组件,它为文本模式的交互提供了一个接口。当用户在控制台输入命令时,这些字符...

    Linux_UNIX系统编程手册(上)

    2. **文件系统和I/O操作**:详述了打开、关闭、读写文件的基本操作,以及文件描述符、标准输入/输出流、文件定位(lseek)和文件复制等高级特性。 3. **信号**:介绍信号的发送、接收、处理机制,以及信号在进程...

    linux/unixshell编程指南

    Linux和Unix Shell编程指南是IT领域中非常重要的一个主题,尤其对于系统管理员、开发者和自动化工程师来说,掌握Shell脚本编写技巧是必不可少的。Shell作为操作系统与用户交互的接口,提供了强大的命令行工具和自动...

Global site tag (gtag.js) - Google Analytics