C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭

1、文件读写前,必须先使用fopen函数打开文件。

fopen

若要对文件进行读写操作,第一步需要使用fopen()函数fopen()函数用于打开指定路径的文件,获取指向该文件的指针

函数原型:

/** @func: fopen

* @brief: 打开文件

* @para: [path]:文件路径,如:"E:\Test\test.txt"

* [mode]:文件打开方式(r w a r+ w+ a+ rb wb ab ...具体见下面表格)

* @return:文件打开成功,则指向该流的文件指针就会被返回

* 文件打开失败,则返回NULL,并把错误代码存在errno中

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

r read 只读(打开文件),文件必须存在

w write 只写(创建文件),文件若已存在,则文件会先被清空

a append 末尾追加写入,文件若不存在,则先创建

疑问1:r+与w+的作用有区别吗?

r表示读,w表示写,都补充一个+,表示既能读也能写,看起来作用好像是一样但,区别就在于第1部分的r与w,一个是文件必须存在,一个是不存在则会先创建

疑问2:w与w+的作用有区别吗?a与a+的作用有区别吗?

w表示擦除写入,a表示追加写入,都补充一个+,赋予它们读的功能

w和a既然都能写了,还不能读吗,还要添加一个+才能读?

2、fread

函数原型:

/** @func: fread

* @brief: 从文件读取

* @para: [buffer]:指向数据块的指针

* [size]:每个数据的大小,单位为Byte(例如:sizeof(int)就是4)

* [count]:数据个数

* [stream]:文件指针,如fp

* @return:实际读取的个数

size_t fread(void *buffer, size_t size, size_t count, FILE *stream);

fread的返回值随着调用格式的不同而不同:

调用格式1:fread(buf,sizeof(buf),1,fp);,将整个buf数据作为1个数据读取,则读取的个数是1读取成功返回值为1

调用格式2:fread(buf,1,sizeof(buf),fp);,将1Byte作为1个数据读取,则读取个数是sizeof(buf)读取成功返回实际写入的数据个数(单位为Byte)

3、fwrite(写入的需要是字符串指针,整型指针容易乱码)

fwrite()函数用于将内存区域中的数据写入到本地文本

函数原型:

/** @func: fwrite

* @brief: 向文件写入

* @para: [buffer]:指向数据块的指针

* [size]:每个数据的大小,单位为Byte(例如:sizeof(int)就是4)

* [count]:数据个数

* [stream]:文件指针,如fp

* @return:实际写入的个数

size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

fwrite的返回值随着调用格式的不同而不同:

调用格式1:fwrite(buf,sizeof(buf),1,fp);,将整个buf数据作为1个数据写入,则写入个数是1

成功写入返回值为1

调用格式2:fwrite(buf,1,sizeof(buf),fp);,将1Byte作为1个数据写入,则写入个数是sizeof(buf)

成功写入则返回实际写入的数据个数(单位为Byte)

fclose

写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。

通过此函数将整型转化为字符型。此函数调用方式为int sprintf(char *string,char *format,arg_list);

说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言提供了多种文件操作函数,可以实现对文件打开读取写入关闭操作。下面是常用的文件操作函数及其使用方法: 1. 打开文件:fopen() fopen()函数用于打开一个文件,并且返回一个文件指针,指向文件的开头。函数的原型如下: ``` FILE *fopen(const char *filename, const char *mode); ``` 其,filename是文件名,mode是文件打开模式,包括: - "r":只读模式,文件必须存在。 - "w":写模式,如果文件存在则清空文件内容,如果文件不存在则创建。 - "a":追加模式,如果文件存在则在文件末尾写入,如果文件不存在则创建。 - "rb":二进制只读模式。 - "wb":二进制写模式。 - "ab":二进制追加模式。 例如,打开一个名为test.txt的文件,可用以下代码: ``` FILE *fp; fp = fopen("test.txt", "r"); if (fp == NULL) { printf("Failed to open the file!\n"); exit(1); } ``` 2. 读取文件:fread() fread()函数用于从文件读取数据,并且返回读取到的字节数。函数的原型如下: ``` size_t fread(void *ptr, size_t size, size_t count, FILE *stream); ``` 其,ptr是指向要读取数据存储位置的指针,size是每个数据项的字节数,count是要读取的数据项数,stream是文件指针。 例如,读取一个整数可用以下代码: ``` int num; fread(&num, sizeof(int), 1, fp); ``` 3. 写入文件:fwrite() fwrite()函数用于向文件写入数据,并且返回写入的字节数。函数的原型如下: ``` size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); ``` 其,ptr是指向要写入数据存储位置的指针,size是每个数据项的字节数,count是要写入的数据项数,stream是文件指针。 例如,写入一个整数可用以下代码: ``` int num = 10; fwrite(&num, sizeof(int), 1, fp); ``` 4. 关闭文件:fclose() fclose()函数用于关闭文件。函数的原型如下: ``` int fclose(FILE *stream); ``` 其,stream是文件指针。如果关闭成功,函数返回0,否则返回EOF。 例如,关闭文件可用以下代码: ``` fclose(fp); ``` 需要注意的是,在进行文件操作时,要对文件打开读取写入关闭进行错误检查,防止出现异常情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值