C语言 文件读写

1. 文件打开与关闭

1.1 打开文件 fopen( )

(1)函数功能:使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件
(2)函数原型:

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

(3)参数解释:

  • filename:字符串,文件名
  • mode:打开模式,常用的有 r、w、a

1.2 关闭文件 fclose()

(1)函数功能:
清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。
(2)函数原型:

 int fclose( FILE *fp );

如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。

FILE *f; 
f=fopen("test.log","r");
if(f == NULL)
    printf("file open failed.\r\n")
fclose(f)

2. 读取文件

2.1 fgetc()

(1)函数功能
fgetc() 函数从 fp 所指向的输入文件中读取一个字符。
(2)函数原型

int fgetc( FILE * fp );

返回值是读取的字符,如果发生错误则返回 EOF。

2.2 fgets()

(1)函数功能
fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。

如果这个函数在读取最后 n - 1个字符之前就遇到一个换行符 ‘\n’ 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符,即读取一行
(2)函数原型

char *fgets( char *buf, int n, FILE *fp );

(3)示例

int main()
{
    FILE *f;
    
    f = fopen("test_log", "r");
    if (f ==NULL)
        printf("file open failed.\r\n");
    
    char data[100] = {0};
    fgets(data, 100, f);
    printf("%s\r\n", data);

    fclose(f);
    return 0;
}

输出结果:

this is test log.

2.3 fscanf()

(1)函数功能
从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
(2)函数原型

int fscanf(FILE *fp, const char *format, ...)
  • format:格式描述符 %s %d
  • 省略号可以是一序列数目不定的指针参数,存储读取的数据。

(3)示例
将上述例子中的 fgets() 替换为 fscanf() 函数。

int main()
{
    FILE *f;

    f = fopen("test_log", "r");
    if (f ==NULL)
        printf("file open failed.\r\n");
    
    char data[200] = {0};
    // fgets(data, 100, f);
    fscanf(f, "%s", data);
    printf("%s\r\n", data);

    fclose(f);
    return 0;
}

输出结果:

this

使用 fscanf() 读取时,遇到空格就停止了,可以使用以下方式逐个提取。

int main()
{
    FILE *f;

    f = fopen("test_log", "r");
    if (f ==NULL)
        printf("file open failed.\r\n");
    
    char str1[100], str2[100], str3[100], str4[100];
    fscanf(f, "%s %s %s %s", str1, str2, str3, str4);
    printf("%s %s %s %s\r\n", str1, str2, str3, str4);

    fclose(f);
    return 0;
}

输出结果

this is test log.

3. 写入文件

3.1 fputc()

(1)函数功能
写入单个字符: fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。
如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。
(2)函数原型

int fputc( int c, FILE *fp );

(3)示例

void fputc_test()
{
    FILE *f;

    f = fopen("test_log", "a");
    if (f ==NULL)
        printf("file open failed.\r\n");
   
    fputc('h', f);

    fclose(f); 
}

3.2 fputs()

(1)函数功能
写入字符串 fputs() 把字符串 s 写入到 fp 所指向的输出流中。
如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。
(2)函数原型

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

(3)示例

void fputs_test()
{
    FILE *f;

    f = fopen("test_log", "a");
    if (f ==NULL)
        printf("file open failed.\r\n");
    
    char data[] = "puts test.";
    fputs(data, f);

    fclose(f); 
}

3.3 fprintf()

(1)函数原型

 int fprintf(FILE *fp,const char *format, ...) 

(2)示例

void fprintf_test()
{
    FILE *f;

    f = fopen("test_log", "a");
    if (f ==NULL)
        printf("file open failed.\r\n");
    
    char data[] = "puts test.\r\n";
    fprintf(f, "%s", data);

    fclose(f); 
}
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

la_fe_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值