11.30 — 12.6 C语言文件的相关操作整理

一、打开关闭文件

1.打开文件

FILE * fopen ( const char * filename, const char * mode );
  • 成功则返回文件的指针,失败则返回 NULL。
  • 任何打开的文件在不需要使用后都必须关闭。

2.关闭文件

int fclose ( FILE * stream );
  • 成功返回0,失败返回 EOF,其值通常为 -1。

应用举例:

#include <stdio.h>
int main ()
{
  FILE * pFile; //文件指针
  pFile = fopen ("D:\\myfile.txt", "wb"); // 以二进制方式打开只写文件
  if (pFile != NULL)
  {
    fputs ("fopen example", pFile);
    fclose (pFile); // 用完后一定要记得关闭
  }
  return 0;
}

二、读文件

1.读取一个字符

int fgetc ( FILE * stream );
  • 返回读取到的字符,读到文件末尾则返回 EOF。

2.读取字符串

char * fgets ( char * str, int num, FILE * stream );
  • str 是将读取到的内容复制到的目标字符串数组
  • num 是一次读取的大小

3.读取指定内存大小

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
  • ptr 为目标内存块,其大小至少为 size * count
  • size 是一次读取的字节大小
  • count 是一次读取多少个 size
  • 返回值是成功读取的字节大小

三、写文件

1.写一个字符

int fputc ( int character, FILE * stream );
  • 成功则返回写入的字符,失败返回 EOF。

2.写入字符串

int fputs ( const char * str, FILE * stream );
  • 成功返回一个正数,失败返回 EOF。

3.写入指定内存大小

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
  • 返回成功写入的内存大小,单位为字节。

四、其他常用函数

1.文件指针位置重定位

int fseek ( FILE * stream, long int offset, int origin );
  • 成功返回 0,失败返回一个非 0 数
  • offset 指相应对 origin 位置处的偏移量,单位为字节
  • origin 是指针的参考位置,有以下三个值可以选择
#define SEEK_CUR    1  // 当前位置
#define SEEK_END    2  // 末尾
#define SEEK_SET    0  // 开头

2.获取指针当前位置

long int ftell ( FILE * stream );
  • 成功返回指针相对于开头的偏移量,失败返回 -1。

3.将缓冲区内容写入文件

int fflush ( FILE * stream );
  • 成功返回 0,失败返回 EOF。

4.fprintf() 和 fscanf()

int fprintf ( FILE * stream, const char * format, ... );
int fscanf ( FILE * stream, const char * format, ... );

举例:

#include <stdio.h>
 
int main()
{
    char str[80];
    float f;
    FILE * pFile;
 
    pFile = fopen("D:\\myfile.txt", "w+");
    // 在文件中写入 "PI is 3.1416" 这个内容
    fprintf(pFile, "%s is %f", "PI", 3.14159f);
    rewind(pFile); // rewind 函数将指针重新回到起始位置
    fscanf(pFile, "%s is %f", str, &f);
    fclose(pFile);
    printf("I have read: %f and %s \n", f, str);
    return 0;
}

五、删除和重命名文件

1. 重命名文件

int rename ( const char * oldname, const char * newname );
  • 删除成功返回 0,失败返回非 0。

2.删除文件

int remove ( const char * filename );
  • 删除成功返回 0,失败返回非 0。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值