随笔小屋 Logo
首页
瞬间
反馈
随笔小屋 Logo
首页 瞬间 反馈
  1. 首页
  2. c语言
  3. 文件操作

文件操作

  • c语言
  • 发布于 2025-08-29
  • 215 次阅读
flor
flor
#include <stdio.h>
FILE *fopen(const char *pathname, const char *mode);   // 打开   失败返回NULL
int   fclose(FILE *stream);                            // 关闭   成功返回0

r

只读

文件必须存在,从头开始读

w

只写

文件不存在就创建,存在就清空,从头开始写

a

追加

文件不存在就创建,存在不清空,从尾开始写

r+

读写

文件须存在,从头开始写

w+

读写

文件不存在就创建,存在就清空,从头开始读写

a+

追读

文件不存在就创建,存在不清空,从头开始读,从尾开始写

#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);        //读
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); //写
  • ptr: 要向文件中读取/写入数据的存储区首地址(比如int a[ ]中a的地址)

  • size: 要读取/写入元素占据的字节数

  • nmemb: 要读取/写入的元素个数

  • stream: 要读取/写入文件的指针

  • 返回

返回实际读/写元素个数

#include <stdio.h>
long ftell(FILE *stream);                            // 返回当前位置(距离文件开头的字节偏移)
void rewind(FILE *stream);                           // 位置指针移动到文件开头,等价于 fseek(stream, 0, SEEK_SET);
int  fseek(FILE *stream, long offset, int whence);   // 任意指定位置指针读写位置

offset 偏移量(字节)

fseek 中 whence 参数:

SEEK_SET 0 位置指针移动到文件头

SEEK_CUR 1 位置指针移动到当前位置

SEEK_END 2 位置指针移动到文件末尾

成功返回 0,失败返回非 0

三个标准文件FILE*

标准输入

stdin

键盘

标准输出

stdout

终端窗口

标准错误

stderr

终端窗口

stderr没有缓冲区

fprintf (fp , "%d" , a); //输出屏幕内容到文件指针的文件中

fscanf (fp , "%d" , &a); //获取文件内容到存储区中

char *fgets(char *s, int size, FILE *stream);
功能:从 stream 读取最多 size-1 个字符,或遇到换行符或 EOF 停止。
如果读到换行符,换行符会被包含在缓冲区内,随后写入终止符 '\0'。
参数:
char *s
指向目标缓冲区的指针,fgets 会把读取到的字符写入该缓冲区并以 '\0' 结尾。
必须指向至少 size 字节的有效内存(不能为 NULL)。
int size
指定缓冲区总大小(以字节为单位)。fgets 最多读取 size-1 个字符,最后保留 1 字节存放终止符 '\0'。
必须大于 0。若为 1,则只能写入 '\0'(不读取字符)。
FILE *stream
指向输入流的文件指针(例如 stdin、由 fopen 打开的文件、或其他 FILE*)。
该流应可读取;遇到 EOF 或发生错误时 fgets 返回 NULL。
返回值:成功时返回 s,发生错误或在未读入字符时遇到 EOF 返回 NULL。
注意:size 参数必须至少为 1;实际可存储字符数为 size-1(为 '\0' 留位置)。

湘ICP备2025147565号-1
gongan beian 湘公网安备43102602000213号
CPU --% | 内存 0.00G/0.00G (0%) | 网络 无活动网卡
服务器资源占用 更新时间 --:--:--