【Linux之IO系统编程学习】05.标准IO之 fopen_fgets_fputs

 
【Linux之IO系统编程学习】

项目代码获取:https://gitee.com/chenshao777/linux_-io.git
(麻烦点个免费的Star哦,您的Star就是我的写作动力!)

05.标准IO之 fopen_fgets_fputs

1、fopen函数

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

作用:
打开操作文件

返回值:
打开成功返回文件指针
如果失败,则返回NULL

参数:

参数含义
pathname带有路径的文件名
mode打开模式

打开模式:

模式含义文件可否存在
w仅写,会清空文件若不存在,则创建新文件
a追加写入若不存在,则创建新文件
r仅读必须存在
r+可读可写必须存在
w+可读可写,会清空文件若不存在,则创建新文件
a+可读可写若不存在,则创建新文件

举例:

FILE *fd;
/* 以读写的方式打开一个文件,并且会清空文件 */
fd = fopen("./a.txt", "w+");
if(fd == NULL){
    printf("打开文件失败!\n");
    return 0;
}

更多代码见开头链接


2、fgets函数

char *fgets(char *s, int size, FILE *stream);

作用:
获取文件流数据

返回值:
读取到的字符串指针

参数:

参数含义
s获取数据存放的缓冲区
size要获取的字节数
stream获取的目标文件

举例:
使用fgets将文件中的内容读出

FILE *fd;
char send_buff[] = "hello linux";
char recv_buff[128] = {0};

/* 以读写的方式打开一个文件,并且会清空文件 */
fd = fopen(argv[1], "w+");
if(fd == NULL){
    printf("打开文件失败!\n");
    return 0;
}

/*中间有其他操作*/
/*
    读取文件数据
    注意:需要设置文件读写指针
*/
fseek(fd, 0, SEEK_SET);   //fseek函数很重要,设置文件读写指针
fgets(recv_buff, 128, fd);
printf("读取到文件数据: %s\n", recv_buff);
while(1);

fclose(fd);

PS:
1.使用 fseek() 函数将文件读写指针恢复到文件开头(或者用 rewind() 函数)
2.fgets() 是行缓存函数,如果 printf 最后不加 \n,则不会有打印数据,会阻塞在 while(1);

更多代码见开头链接


3、fputs函数

int fputs(const char *s, FILE *stream);

作用:
向文件中写入数据

返回值:
如果成功返回一个非负数,如果失败返回EOF(-1)

参数:

参数含义
s发送数据的字符串首地址
stream要写入的文件流指针

举例:
使用 fputs 向文件中写入数据

FILE *fd;
char send_buff[] = "hello linux";

/* 以读写的方式打开一个文件,并且会清空文件 */
fd = fopen(argv[1], "w+");
if(fd == NULL){
    printf("打开文件失败!\n");
    return 0;
}

/* 
    写入数据到文件
    过程: 将用户缓冲区数据写入库缓存
          当遇到\n或者写满了才会将库缓存写入内核缓存
    PS:这里写入的数据中没有\n,但是由于最后调用了fclose,
        关闭文件之前会强行刷新缓冲区的数据,所以会将库缓冲数据写入内核缓冲
        可以使用 fflush 强制刷新缓冲区
*/
fputs(send_buff, fd);
fflush(fd);  //强制将缓存数据写入内核缓存
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值