0

0

Linux标准I/O库

雪夜

雪夜

发布时间:2025-07-21 12:24:12

|

365人浏览过

|

来源于php中文网

原创

linux标准i/o库

Linux 标准 I/O(Standard I/O)库提供了一系列函数,用于高级文件输入和输出操作。这些函数构建在底层文件 I/O 系统调用之上,为开发者提供了更便捷、更高级的文件处理方式。以下是一些常用的 Linux 标准 I/O 库函数:

  1. 文件指针和标准 I/O:标准 I/O 使用 FILE 结构来表示文件流,通过文件指针(FILE*)进行操作。FILE 结构包含文件的缓冲区、文件描述符、文件位置指示器等信息。

  2. 文件打开和关闭

    • FILE* fopen(const char* filename, const char* mode); 打开文件,并返回一个文件指针。filename 是文件名,mode 指定打开文件的模式(例如:"r" - 只读,"w" - 只写,"a" - 追加,"r+" - 读写,"w+" - 读写,"a+" - 读写追加等)。
    • int fclose(FILE* stream); 关闭文件流,释放相关资源。
#include 
int main() {
    // 打开文件
    FILE* file = fopen("example.txt", "r");
    if (file != NULL) {
        // 文件操作...
        // 关闭文件
        fclose(file);
    } else {
        perror("Error opening file");
    }
    return 0;
}
  1. 文件读写
    • size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream); 从文件读取数据到缓冲区。ptr 是数据缓冲区的指针,size 是每个数据项的大小,nmemb 是要读取的数据项数量,stream 是文件指针。
    • size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream); 将数据从缓冲区写入文件。ptr 是数据缓冲区的指针,size 是每个数据项的大小,nmemb 是要写入的数据项数量,stream 是文件指针。
#include 
#include 
int main() {
    FILE* file = fopen("example.txt", "w");
    if (file != NULL) {
        // 写入数据
        const char* data = "Hello, Standard I/O!";
        fwrite(data, sizeof(char), strlen(data), file);
        // 关闭文件
        fclose(file);
    } else {
        perror("Error opening file");
    }
    return 0;
}
  1. 标准输入输出
    • int fprintf(FILE* stream, const char* format, ...); 将格式化的数据写入文件。
    • int fscanf(FILE* stream, const char* format, ...); 从文件中读取格式化的数据。
    • int printf(const char* format, ...); 将格式化的数据写入标准输出。
    • int scanf(const char* format, ...); 从标准输入读取格式化的数据。
#include 
int main() {
    FILE* file = fopen("example.txt", "w");
    if (file != NULL) {
        // 将格式化的数据写入文件
        fprintf(file, "The answer is: %d\n", 42);
        // 关闭文件
        fclose(file);
    } else {
        perror("Error opening file");
    }
    return 0;
}
  1. 标准错误输出
    • int perror(const char* s); 输出一个错误消息。
#include 
int main() {
    FILE* file = fopen("nonexistent_file.txt", "r");
    if (file == NULL) {
        // 输出错误消息
        perror("Error opening file");
    }
    return 0;
}
  1. 标准输入输出重定向
    • int fflush(FILE* stream); 刷新缓冲区。
    • int setvbuf(FILE* stream, char* buffer, int mode, size_t size); 设置文件流的缓冲区。
    • int fseek(FILE* stream, long offset, int whence); 移动文件位置指示器。
#include 
int main() {
    FILE* file = fopen("example.txt", "w");
    if (file != NULL) {
        // 写入数据
        fprintf(file, "Hello, Standard I/O!");
        // 刷新缓冲区
        fflush(file);
        // 移动文件位置指示器
        fseek(file, 0, SEEK_SET);
        // 关闭文件
        fclose(file);
    } else {
        perror("Error opening file");
    }
    return 0;
}
  1. 标准输入输出缓冲:标准 I/O 库使用缓冲区来提高性能。默认情况下,标准输入(stdin)和标准输出(stdout)是行缓冲的,而标准错误输出(stderr)是无缓冲的。

    Destoon B2B网站
    Destoon B2B网站

    Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在

    下载
    • 行缓冲:当遇到换行符 \n 时,缓冲区会被刷新。
    • 全缓冲:当缓冲区满时,或者使用 fflush 函数时,缓冲区会被刷新。
#include 
int main() {
    // 默认为行缓冲,当遇到换行符时,缓冲区被刷新
    printf("Hello, ");  // 不会立即输出
    // 刷新缓冲区
    fflush(stdout);  // 输出 "Hello, "
    // 全缓冲,缓冲区满时被刷新
    printf("World!");  // 不会立即输出
    // 刷新缓冲区
    fflush(stdout);  // 输出 "World!"
    return 0;
}
  1. 标准输入输出重定向:标准输入输出重定向允许程序从不同的源读取输入或将输出发送到不同的目标。这在命令行中特别有用。

    • 标准输入重定向:./program 程序从 input.txt 中读取输入。
    • 标准输出重定向:./program > output.txt 程序将输出写入到 output.txt
#include 
int main() {
    // 从标准输入读取数据
    int number;
    scanf("%d", &number);
    printf("You entered: %d\n", number);
    // 将输出重定向到文件
    freopen("output.txt", "w", stdout);
    printf("This will be written to output.txt\n");
    return 0;
}
  1. 标准输入输出流的复制:通过 dupdup2 函数,可以复制文件描述符,实现标准输入输出流的重定向。

    • int dup(int oldfd); 复制文件描述符,返回新的文件描述符。
    • int dup2(int oldfd, int newfd); 复制文件描述符到指定的文件描述符,如果指定的文件描述符已经打开,则关闭它。
#include 
#include 
int main() {
    // 复制标准输出流到文件描述符 3
    int newfd = dup(STDOUT_FILENO);
    // 输出到标准输出和新的文件描述符
    printf("Hello, Standard Output!\n");
    dprintf(newfd, "Hello, New File Descriptor!\n");
    // 关闭新的文件描述符
    close(newfd);
    return 0;
}
  1. 标准错误输出:标准错误输出流 stderr 通常用于输出程序运行时的错误消息。
#include 
int main() {
    fprintf(stderr, "This is an error message.\n");
    perror("An error occurred");
    return 0;
}

相关文章

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

679

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

431

2024.06.27

fclose函数的用法
fclose函数的用法

fclose是一个C语言和C++中的标准库函数,用于关闭一个已经打开的文件,是文件操作中非常重要的一个函数,用于将文件流与底层文件系统分离,释放相关的资源。更多关于fclose函数的相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

329

2023.11.30

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

73

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

282

2023.11.28

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

526

2023.09.20

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

338

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

542

2024.08.29

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.6万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号