Linux环境编程--04 标准IO

1. 要点

1. FILE结构体,也称为流,是fopen打开的返回值。
2. 缓冲,标准IO实现用户态增加缓冲区。
3. 文本流、二进制流
4. EOF 是什么意思。
5. fgetc函数返回值为什么是int?

2.  标准IO api (是依据对应的无缓冲io函数实现的,也就是POSIX IO)

fopen(),fclose(),fgetc(),fputc(),fgets(),fputs(),fread(),fwrite()

------------------------------------------------------------------------------------------------------------

3.1  fopen() 函数原型

FILE *fopen(const char *path, const char *mode);

3.2 返回值

打开成功则返回FILE 类型指针,失败则返回空指针,并写入errno值。

3.3 参数

*path 指文件指向字符类型的指针

*mode   打开模式,打开文件的权限,指向字符类型的指针

3.4 头文件

#include <stdio.h>  

3.5 示例

void test02_01(){
    FILE *f = NULL;
    f = fopen("testfiles/test02_01.txt","r");
    if(f!=NULL) printf("打开文件成功,指针为:%p\n",f);
    if(f==NULL){
        printf("打开文件失败\n");
        printf("errno:%d\t%s\n",errno,strerror(errno));
    }
}

4.1 fclose()

    功能:关闭打开的文件指针,并且刷新缓存。

    函数原型:int fclose(FILE *fp);

    参数:FILE *fp 打开的文件指针。

    返回值:成功返回0,如果不成功返回(-1);

4.2 示例

 /* fclose()函数 */
    int fclose_ret = fclose(f);
    if(fclose_ret==0) printf("文件f %p,关闭成功\n",f);
    if(fclose_ret==-1){
        printf("文件关闭失败\n");
        printf("errno:%d\t%s\n",errno,strerror(errno));
    }

5.1 fgetc()函数

    功能:从流中读入下一个字符

    函数原型: int fgetc(FILE *stream);

    参数:FILE *stream 打开的文件流的指针。

    返回值:成功返回读取到的字符,读到文件结尾时返回EOF。

5.2 示例

    /* fgetc()函数 */
    int c = fgetc(f);
    if (c==EOF) printf("读入错误\n");
    printf("读入字符的ascii值为:%d\n",c);
    printf("读入的字符为:%c\n",c);

6.1 fputc()函数

功能:  函数fputc()把给出的字符写到给出的输出流. 

函数原型 :  int fputc(int c, FILE *stream);

参数:int类型(ascii值)  输出流的指针

返回值:如写入成功则返回写入的字符, 否则返回一个EOF

6.2 示例

    /* fputc()函数 */
    fseek(f,0,SEEK_END);//设置指针定向到文件尾部
    int c_ret = fputc(101,f);
    // int c_ret = fputc('c',f);//参考也可用字符型,应该是默认执行了强制转换
    if(c_ret==EOF) printf("输入失败\n");
    printf("输入字符的ascii值为:%d\n",c_ret);
    printf("输入的字符为:%c\n",c_ret);

 

参考: Linux环境编程--01

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值