C/C++几种常用的文件操作方式

本文详细介绍了C语言中用于文件操作的fopen()函数,包括其参数、模式及使用示例。同时,也讲解了用于读取单个字符的fgetc()函数,展示了一个简单的读取并打印文件内容的程序。通过这两个函数,开发者可以轻松地对文本文件进行读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C 库函数 - fopen()

包含在stdio.h的头文件内部

        C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。

下面是 fopen() 函数的声明。

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

参数

  • filename -- 字符串,表示要打开的文件名称。
  • mode -- 字符串,表示文件的访问模式,可以是以下表格中的值:
模式描述
"r"打开一个用于读取的文件。该文件必须存在。
"w"创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
"a"追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
"r+"打开一个用于更新的文件,可读取也可写入。该文件必须存在。
"w+"创建一个用于读写的空文件。
"a+"打开一个用于读取和追加的文件。

返回值

该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。

实例

下面的实例演示了 fopen() 函数的用法。

实例

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   FILE * fp;
 
   fp = fopen ("file.txt", "w+");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
   
   fclose(fp);
   
   return(0);
}

让我们编译并运行上面的程序,这将创建一个带有一下内容的文件 file.txt

We are in 2014

mode 还有有下列几种形态字符串:

  • rb+ 读写打开一个二进制文件,允许读数据。
  • rw+ 读写打开一个文本文件,允许读和写。
  • a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  • wb 只写打开或新建一个二进制文件;只允许写数据。
  • wb+ 读写打开或建立一个二进制文件,允许读和写。
  • ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
  • at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。

读取字符串到缓冲区,并打印在终端

字符串读取函数- fgetc()

包含在stdio.h的头文件内部

        C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

下面是 fgetc() 函数的声明。

int fgetc(FILE *fp)

参数

  • fp -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。

fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF
EOF 是 end of file 的缩写,表示文件末尾,是在 stdio.h 中定义的宏,它的值是一个负数,往往是 -1。fgetc() 的返回值类型之所以为 int,就是为了容纳这个负数(char不能是负数)。

下面的实例演示了 fgetc() 函数的用法。

#include<stdio.h>
int main()
{
    FILE *fp;
    char ch;
   
    //如果文件不存在,给出提示并退出
    if( (fp=fopen("file.txt","rt")) == NULL )
    {
        printf("Fail to open file!\n");
        return -1;
    }
    //每次读取一个字节,直到读取完毕
    while( (ch=fgetc(fp)) != EOF )
    {
        printf("%c", c);
    }
    fclose(fp);
    return 0;
}

让我们编译并运行上面的程序,这将产生以下结果:

We are in 2014
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值