Linux C语言 文件操作

打开函数 fopen 的原型如下。

  FILE * fopen(char *filename, char *mode);

返回值:打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。

表 2
模式含 义说 明
r只读文件必须存在,否则打开失败
w只写若文件存在,则清除原文件内容后写入;否则,新建文件后写入
a追加只写若文件存在,则位置指针移到文件末尾,在文件尾部追加写人,故该方式不 删除原文件数据;若文件不存在,则打开失败
r+读写文件必须存在。在只读 r 的基础上加 '+' 表示增加可写的功能。下同
w+读写新建一个文件,先向该文件中写人数据,然后可从该文件中读取数据
a+读写在” a”模式的基础上,增加可读功能
rb二进制读功能同模式”r”,区别:b表示以二进制模式打开。下同
wb二进制写功能同模式“w”。二进制模式
ab二进制追加功能同模式”a”。二进制模式
rb+二进制读写功能同模式"r+”。二进制模式
wb+二进制读写功能同模式”w+”。二进制模式
ab+二进制读写功能同模式”a+”。二进制模式

关闭函数 fclose 的原型如下。

  int fclose(FILE *fp);       // 函数参数:fp:已打开的文件指针。

返回值:正常关闭,返回否则返回 EOF(-1)。

 

文件格式化输出函数 fprintf 的函数原型为:所在头文件:<stdio.h>

  int fprintf (文件指针,格式控制串,输出表列);

函数功能:把输出表列中的数据按照指定的格式输出到文件中。

返回值:输出成功,返回输出的字符数;输出失败,返回一负数

#include <stdio.h>

#define SUCCESS        1
#define FAIL        0
#define FILE_PARH    "/root/Desktop/data/new/"
#define FILE_NAME    FILE_PARH "test.text"

int writFile()
{
    FILE *fp;
    fp = fopen(FILE_NAME, "w+");
    if (!fp)
    {
        return FAIL;
    }

    fprintf(fp,"this is a test %s\n","- OK");
    fclose(fp);
    return SUCCESS;
}
int main(int argc, char* argv[])
{
    int iRes = SUCCESS;

    iRes = writFile();
    
    return iRes;
}


运行结果:
[root@192 new]# cat ./test.text
this is a test - OK

 

C 语言程序中常使用 fseek 函数移动文件读写位置指针

  int fseek(FI:LE *fp, long offset, int origin);

函数功能:把文件读写指针调整到从 origin 基点开始偏移 offset 处,即把文件读写指针移动到 origin+offset 处。

基准位置 origin 有三种常量取值:SEEK_SET、SEEK_CUR 和 SEEK_END,取值依次为 0,1,2。

  SEEK_SET:文件开头,即第一个有效数据的起始位置。
  SEEK_CUR:当前位置。
  SEEK_END:文件结尾,即最后一个有效数据之后的位置。

#include <stdio.h>

#define SUCCESS        1
#define FAIL        0
#define FILE_PARH    "/root/Desktop/data/new/"
#define FILE_NAME    FILE_PARH "a.text"

int writeBeginFile()
{
    int iRes = SUCCESS;
    FILE *fp;
    fp = fopen(FILE_NAME, "w+");
    if (!fp)
    {
        return FAIL;
    }

    fprintf(fp,"this is a test content %s\n","- OK");
    fprintf(fp,"this is a test content %s\n","- OK");

    fseek(fp, 0, SEEK_SET);    //文件头
    fprintf(fp, "%s\n", "This the file begin");
    fseek(fp, 0, SEEK_END);    //文件尾
    fprintf(fp, "%s\n", "This the file end");

    
    fclose(fp);
    return iRes;

}

int main(int argc, char* argv[])
{
    int iRes = SUCCESS;
    iRes = writeBeginFile();
    return iRes;
}
运行结果:

[root@192 new]# cat a.text
This the file begin
nt - OK
this is a test content - OK
This the file end

 

 

转载于:https://www.cnblogs.com/mingyue605/p/10587672.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值