`
oolala
  • 浏览: 103572 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:22803
社区版块
存档分类
最新评论

Unix环境高级编程笔记:5、标准IO库

 
阅读更多
1、fwide 
    设置流的定向
    #include <stdio.h>
    #include <wchar.h>
    int fwide(FILE *fp,int mode);
    mode参数值为负,fwide试图使指定的流是字节
    mode参数值为正,fwide将试图使指定的流是宽定向
    mode参数值为0,fwide将不试图设置流的定向,返回标识该流的定向的值
 
2、标准输入、标准输出、标准出错
    对一个进程预定义了三个流,并且这三个流可以自动被进程使用。标准输入、标准输出、标准出错
    STDIN_FILENO        
    STDOUT_FILENO
    STDERR_FILENO
    这三个标准io流通过预定义文件指针stdin、stdout、stderr加以引用   <stdio.h>
 
3、标准I/O提供三种类型缓冲
    全缓冲
    行缓冲
    不带缓冲
 
    更改缓冲类型
    #include <stdio.h>
    void setbuf(FILE *restrict fp,char *restrict buf);
    void setvbuf(FILE *restrict fp,char *restrict buf,int mode,size_t size);
 
    任何时间,可以强制冲洗一个流
    #include <stdio.h>
    int fflush(FILE *fp);    成功0 出错EOF
 
4、打开流
    #include <stdio.h>
    FILE *fopen(const char *restrict pathname,const char *restrict type);
    FILE *freopen(const char *restrict pathname,const char *restrict type,FILE *restrict fp);
    FILE *fdopen(int filedes,const char *type);
 
    type参数指定对该IO流的读、写方式
    r或rb                      为读而打开
    w或wb                   把文件截短至0长,或为写而创建
    a或ab                     添加    为在文件尾写而打开,或为写而创建
    r+或r+b或rb+        为读写而打开
    w+或w+b或wb+    把文件截短至0长,或为读和写而打开
    a+或a+b或ab+      为在文件尾读和写而打开或创建
    
    fclose关闭一个打开的流
 
5、读和写流
    a)一次读一个字符
    输入函数
 
    int getc(FILE *fp);
    int fgetc(FILE *fp);
    int getchar(void);
    三个函数的返回值,或成功则返回下一个字符,或已经到达文件结尾或出错则返回EOF
 
    函数getchar等价行getc(stdin),前二个函数的区别是getc可被实现为实现为宏
 
    输出函数
    #include <stdio.h>
    int putc(int c ,FILE *fp);
    int fputc(int c,FILE *fp);
    int putchar(int c);
    putchar(c)等效于putc(c,stdout)
 
    
    b)每次一行
    每次输入一行
    
    #include <stdio.h
    char *fgets(char *restrict buf,int n,FILE *restrict fp);
    char *gets(char *buf);
    不要使用gets
    
    每次输出一行
    int fputs(const char *restrict str,FILE *restrict fp);
    int puts(const char *str);
    二个函数返回值:或成功则返回非负值,或出错则返回EOF
 
    
分享到:
评论

相关推荐

    高级编程笔记文件io/标准io.txt

    适用于编程初学者,不给你们看

    达内培训笔记,达内培训的内容

    8. **IO高级编程**:包括异步IO、缓冲技术等。 9. **多线程**:理解和使用多线程,提高并发性能。 10. **多线程同步**:防止线程间的竞态条件和死锁。 11. **QT**:学习GUI(图形用户界面)编程框架。 12. **PL/SQL*...

    corejava的学习笔记

    5. **IO流**:Java的IO流库用于读写文件、网络通信等。学习流的概念、不同类型的流以及缓冲区技术,可以帮助开发者实现高效的数据传输。 6. **JDBC**:Java Database Connectivity是Java访问数据库的标准API,包括...

    达内java学习笔记全套

    【Java学习笔记全套】是针对Java编程语言的一套全面学习资料,涵盖了Unix操作系统基础、SQL数据库操作、核心Java编程、Hibernate持久化框架、以及Spring框架等多个关键知识点。这些笔记旨在帮助初学者系统地掌握Java...

    Linux读书笔记;推荐书籍.rar

    2.《UNIX环境高级编程》 推荐学习Linux的必读书籍,你是否已经掌握了它们?推荐学习Linux的必读书籍,你是否已经掌握了它们? 虽然这本书并不是专门讲解Linux操作系统的linux学习书籍嵌入式linux 培训,但它对于...

    linux 下 select 编程 librtspserver

    在 UNIX 网络编程第五章读书笔记 我们遇到这样一个问题:当客户端阻塞在 fgets() 等待客户输入的时候,服务器端断开连接。而客户端却不能及时知道,只有在客户输入完毕并发送到服务器的时候才知道连接已经断开,...

    达内java班课堂笔记

    【达内Java班课堂笔记】是一份详尽的5个月学习记录,总计300多页,涵盖了从Unix基础知识到Java编程的全面内容。这份笔记旨在帮助初学者系统地掌握Java编程技能,以下是对其中主要知识点的详细阐述。 **第一章 Unix*...

    javase笔记编辑1.docx

    这些基础知识对于Java初学者至关重要,它们为后续深入学习Java语法、面向对象编程、异常处理、集合框架、IO流、多线程等高级概念奠定了基础。理解Linux操作系统对于Java开发者尤其重要,因为许多服务器端应用都是在...

    javaSE学习教程

    5. **输入输出流**: Java的IO流用于处理数据的输入和输出,包括文件操作、网络通信等。 6. **线程**: Java支持多线程编程,学习者需要理解线程的概念,掌握同步与互斥,以及如何创建和管理线程。 7. **反射**: ...

    Java,web,oracle笔记

    5. 系统管理:文档还提到了系统管理员在Unix/Linux环境中常用的命令和操作,例如查看磁盘分区、文件inode信息、进程状态、用户和组信息等。这些知识对于理解Linux文件系统结构、权限管理、用户身份验证和任务调度...

    达内java软件工程师培训笔记(17门课全)

    3. **Core Java**: 核心Java涵盖了Java语言的基础和进阶内容,如面向对象编程、类和对象、封装、继承、多态、异常处理、集合框架(List、Set、Map)、IO流、线程编程、反射等。 4. **XML**: XML(可扩展标记语言)...

    Linux系统和网络编程学习文件

    在IT领域,Linux系统和网络编程是至关重要的组成部分,尤其对于软件开发人员和系统管理员而言。这个名为"Linux系统和网络编程学习文件"的压缩包很可能是为了帮助学习者掌握这些核心技能。以下是对其中涉及知识点的...

    Java_笔记整理

    通过这份笔记,我们能够深入了解Java语言的基础特性、面向对象的设计原则以及一系列高级框架的应用。此外,还简要介绍了Linux/Unix系统的一些基本操作指令。 #### Java 核心知识点 1. **Core Java** - **基础...

    linux 下 select 编程 librtspserver 文件

    linux 下 select 编程 librtspserver 文件夹.rar linux 下 select 编程 librtspserver linux 下 select 编程 我们知道 select 是IO ...在 UNIX 网络编程第五章读书笔记 我们遇到这样一个问题:当客户端阻塞在 fgets

    java初学者笔记宝典(经典)

    3. **Core Java**:核心Java包括Java语法、面向对象编程概念、异常处理、集合框架、IO流、多线程和网络编程。这些是Java编程的基础,对于构建任何Java应用都是必不可少的。 4. **XML**:XML(可扩展标记语言)用于...

    GTK+2.0.pdf linux图形编程

    GTK+(GIMP Toolkit)是一款功能强大的开源图形界面开发库,主要用于Linux和其他类UNIX系统上开发跨平台的应用程序。GTK+2.0作为GTK的一个重要版本,提供了丰富的用户界面组件,帮助开发者快速构建美观且功能完备的...

    linux 下 select 编程 librtspserver.rar

    在 UNIX 网络编程第五章读书笔记 我们遇到这样一个问题:当客户端阻塞在 fgets() 等待客户输入的时候,服务器端断开连接。而客户端却不能及时知道,只有在客户输入完毕并发送到服务器的时候才知道连接已经断开,...

    lidongyalin.github.io:lidongyalin.github.io

    综上所述,"lidongyalin.github.io"博客的读者可以通过"lidongyalin.github.io-docs"深入了解Shell编程的各个方面,从基础到高级技巧,提升自己的Linux环境操作技能和自动化能力。这样的资源对于任何在IT领域工作的...

    linux 下 select 编程 librtspserver 文件夹.rar

    linux 下 select 编程 librtspserver linux 下 select 编程 我们...在 UNIX 网络编程第五章读书笔记 我们遇到这样一个问题:当客户端阻塞在 fgets() 等待客户输入的时候,服务器端断开连接。而客户端却不能及时知道

Global site tag (gtag.js) - Google Analytics