C语言对文件的操作

函数简介:


函数功能:打开一个 文件
函数原型:FILE * f open(const char * path,const char * mode);
相关函数: openfclosefopen_s [1] ,_wfopen
所需库:< stdio.h>
返回值: 文件顺利打开后,指向该流的 文件指针就会被返回。如果 文件打开失败则返回NULL,并把 错误代码存在errno 中。
一般而言,打开 文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在f open()后作错误判断及处理。
参数说明:
参数path 字符串包含欲打开的 文件路径及文件名,参数mode字符串则代表着流 形态
mode有下列几种形态字符串:
r 以 只读方式打开 文件,该文件必须存在。
r+ 以可读写方式打开 文件,该文件必须存在。
rb+ 读写打开一个 二进制文件,允许读 数据
rw+ 读写打开一个文本 文件,允许读和写。
w 打开只写 文件,若文件存在则文件长度清为0,即该文件内容会消失。若 文件不存在则建立该文件。
w+ 打开可读写 文件,若文件存在则文件长度清为零,即该文件内容会消失。若 文件不存在则建立该文件。
a 以附加的 方式打开只写 文件。若 文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的 文件。若 文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个 二进制文件;只允许写数据。
wb+ 读写打开或建立一个 二进制文件,允许读和写。
ab+ 读写打开一个 二进制文件,允许读或在文件末追加数据。
at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。

操作

在文件操作时,需要注意以下几点问题
1、在定义文件指针时, 要将文件指针指向空;如 FILE *fp = NULL;
2、文件操作完成后,需要将文件关闭,一定要注意, 否则会造成文件所占用内存泄露和在下次访问文件时出现问题。
3、 文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;

fwrite:

功能:C语言函数,向文件写入一个数据块

用法:

size_t fwrite(const void* buffer,  size_t size, size_t count, FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的 数据块数目
(1)buffer:是一个 指针,对fwrite来说,是要输出数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的 数据项的个数;
(4)stream:目标 文件指针
(5)返回实际写入的数据项个数count。

fclose:

函数名: fclose()
功 能: 关闭一个流。注意:使用fclose()函数就可以把 缓冲区内最后剩余的 数据输出到磁盘文件中,并释放 文件指针和有关的缓冲区。
程序例:
#include < string.h>
#include < stdio.h>
int main(void)
{
FILE *fp;
char buf[11] = "0123456789";
fp = fopen("DUMMY.FIL", "w");/* create a file containing 10 bytes(创建一个包含10个字节的文件) */
fwrite(&buf, strlen(buf), 1, fp);/*将buf内容写入到文件中*/
fclose(fp);/* close the file (关闭文件)*/
return 0;
}
如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。
如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。


看一下测试代码:

#include  <stdio.h>
#include  <stdlib.h>

int main()
{
    FILE *fp = NULL;//在定义文件指针时,要将文件指针指向空;如 FILE *fp = NULL;
    char ch;
    if((fp = fopen("output.txt","wt+"))==NULL)
    {
        printf("cannot open file strike any key exit!");
        getchar();
        exit(1);
    }
    printf("input a string:\n");
    ch=getchar();
    while(ch!='\n')
    {
        fputc(ch,fp);
        ch=getchar();
    }
    rewind(fp);//将fp指针指向文件头处

    ch=fgetc(fp);
    while(ch!=EOF)
    {
        putchar(ch);
        ch=fgetc(fp);
    }
    printf("\n");

    fclose(fp);//文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。
    /*文件关闭后,需要将文件指针指向空,
    这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;*/
    fp = NULL;
    return 0;
}

测试结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值