c 文件读写

紫色代表一级目录
粉红代表二级目录
蓝色代表三级目录
红色代表关键字
橙色代表说明

c 文件读写
  一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。

打开文件
  格式:
    FILE *fopen( const char * filename, const char * mode );

模式描述
r打开一个已有的文本文件,允许读取文件。
w打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+打开一个文本文件,允许读写文件。
w+打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

若打开二进制文件在相应打开模式后面加一个b即可。

关闭文件
  int fclose( FILE *fp );
  如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。

写入文件
  int fputc( int c, FILE *fp );
  如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。
  int fputs( const char *s, FILE *fp );
  如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。

读取文件
  int fgetc( FILE * fp );
  返回值是读取的字符,如果发生错误则返回 EOF。
  char *fgets( char *buf, int n, FILE *fp );
  函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。
  如果这个函数在读取最后一个字符之前就遇到一个换行符 ‘\n’ 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。

二进制 I/O 函数
  size_t fread(void *ptr, size_t size_of_elements,size_t number_of_elements, FILE *a_file);
  size_t fwrite(const void *ptr, size_t size_of_elements,size_t number_of_elements, FILE *a_file);

<think>好的,用户想了解C语言中文件读写的用法,需要示例教程。首先,我得回忆一下C语言文件操作的基本函数,比如fopen、fclose、fread、fwrite等。然后考虑如何结构清晰地分步骤讲解,可能包括打开文件读写操作、关闭文件这几个部分。 用户可能需要基础示例,比如写入文本文件和读取文本文件。我应该分别给出代码示例,并解释每个函数的作用和参数。同时,需要注意错误处理,比如检查文件是否成功打开,这点很重要,否则可能导致程序崩溃。 接下来,二进制文件读写也是常见的需求,比如处理结构体数据。这里需要用fwrite和fread,并说明它们与文本模式的区别,比如换行符的处理和数据结构保存。还要提醒用户注意打开模式,比如使用"wb"和"rb"。 然后,用户可能关心其他操作,比如文件的追加、删除和重命名。需要简要提到这些函数,比如fseek、remove和rename,并给出简单示例。 在生成相关问题的时候,要考虑用户可能的后续疑问,比如不同模式的区别、结构体读写的问题、大文件处理等。这些问题可以帮助用户更深入地理解文件操作。 需要确保所有代码示例正确,语法无误。比如,fopen的返回检查,使用perror输出错误信息。还有,结构体读写时使用sizeof计算大小,以及fread的返回值处理。 另外,注意中文字符的编码问题,如果在文本模式下处理可能需要考虑,但可能超出基础范围,暂时不提。重点放在基本操作和常见问题上。 最后,检查回答是否符合系统指令:使用中文,数学公式用$...$,独立公式用$$...$$,但这里可能涉及较少数学内容。确保代码块用正确的语法高亮,比如标注语言为C。引用部分如果没有具体来源,可能需要忽略或标注示例引用,但用户提供的引用示例中没有实际引用链接,所以可能不需要添加。</think># C语言文件读写基础教程 ## 一、文件操作基本步骤 1. 使用`fopen()`打开文件 2. 使用文件指针进行读写操作 3. 使用`fclose()`关闭文件 ## 二、文本文件操作示例 ### 1. 写入文本文件 ```c #include <stdio.h> int main() { FILE *fp = fopen("example.txt", "w"); if(fp == NULL) { perror("文件打开失败"); return 1; } fprintf(fp, "这是第一行文本\n"); fputs("这是第二行文本\n", fp); fclose(fp); return 0; } ``` ### 2. 读取文本文件 ```c #include <stdio.h> int main() { FILE *fp = fopen("example.txt", "r"); if(fp == NULL) { perror("文件打开失败"); return 1; } char buffer[255]; while(fgets(buffer, sizeof(buffer), fp) != NULL) { printf("%s", buffer); } fclose(fp); return 0; } ``` ## 三、二进制文件操作 ### 1. 写入二进制文件 ```c struct Student { int id; char name[20]; float score; }; int main() { struct Student s = {1001, "张三", 89.5}; FILE *fp = fopen("data.bin", "wb"); fwrite(&s, sizeof(struct Student), 1, fp); fclose(fp); return 0; } ``` ### 2. 读取二进制文件 ```c int main() { struct Student s; FILE *fp = fopen("data.bin", "rb"); fread(&s, sizeof(struct Student), 1, fp); printf("学号: %d\n姓名: %s\n成绩: %.1f", s.id, s.name, s.score); fclose(fp); return 0; } ``` ## 四、其他常用操作 1. **追加内容**:使用`"a"`模式打开文件 2. **文件定位**:使用`fseek(fp, offset, SEEK_SET)` 3. **删除文件**:`remove("filename")` 4. **重命名文件**:`rename("oldname", "newname")`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值