c语言基础知识-文件操作

简介: c语言基础知识-文件操作

  (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹

目录

C语言文件操作

1、打开文件

fopen

2、读取文件

fgetc

fgets

fread

3、写入文件

fputc

fputs

fwrite

4、文件定位

fseek

rewind

ftell


C语言文件操作

1、打开文件

fopen

打开文件我们需要fopen函数,选中fopen然后按键盘F1键即可打开微软的MSDN数据库,下面就是MSDN中打开文件的几种方式:屏幕截图 2023-07-29 215118.png

我们用“r”来打开文件,复制文件的绝对地址后修改转义字符,并用if语句检测,最后关闭文件。

如果程序运行成功且并没有显示打开失败,则打开文件成功

#include<stdio.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt","r");
  if (fp == NULL)
  {
    printf("打开失败\n");
  }
  //关闭文件
  fclose(fp);
  return 0;
}

2、读取文件

fgetc

读取文件我们可以用函数fgetc,fgetc函数一次只能读取一个文件,当文件全部读完后,它会返回EOF,所以我们可以用while循环实现一次性读取全部文件

int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt","r");
  //fgetc读取完以后,会将文件指针移动到下一个字符
  char ch = fgetc(fp);//读取第一个
  printf("%c\n",ch);
  ch = fgetc(fp);//读取第二个
  printf("%c\n", ch);
  while (EOF !=(ch = fgetc(fp)))//循环读取全部文件内容
  {
    printf("%c",ch);
  }
  //关闭文件
  fclose(fp);
  return 0;
}

我的文件内容为        

输出为:

1

2

3456

abcdef

fgets

我们也可以用fgets函数读取文件,fgets函数一次可以读取一行,和fgetc一样,fgets读取完一行以后,会将文件指针移动到下一行

#include<stdio.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt","r");
  char str[200];
  fgets(str, 200, fp);
  printf("%s\n", str);//读取第一行
  fgets(str, 200, fp);
  printf("%s\n", str);//读取第二行
  //关闭文件
  fclose(fp);
  return 0;
}

输出为:

123456

abcdef

fread

与上面两个函数相比,fread函数就显得更加方便,fread函数可以选择要读取的文件数量,用法如下:

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

buffer

数据的存储位置。

size

项目大小(以字节为单位)。

count

要读取的项的最大数量。

stream

指向 FILE 结构的指针。

#include<stdio.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt","r");
  //fread函数可以读取任意数目的文件内容
  char str[200] = { 0 };
  //每个元素1个字节,读取10个这样的元素,返回实际读取的大小
  fread(str, 1, 10, fp);
  printf("%s\n", str);
  //关闭文件
  fclose(fp);
  return 0;
}

输出为:

123456

abc

3、写入文件

fputc

fputc和fgetc用法相似,都是一次作用一个元素

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt", "w");
  //写入一个字符,清空写
  fputc('a', fp);//第一个字符
  fputc('b', fp);//第二个
  fputc('c', fp);//第三个
  //关闭文件
  fclose(fp);
  return 0;
}

文件内容就变成了      

fputs

fputs函数一次可以写入一串字符

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt", "w");
  //写入字符串
  const char * str="123456";
  fputs(str, fp);
  //关闭文件
  fclose(fp);
  return 0;
}

文件内容就变成了  

fwrite

fwrite函数与fread函数类似,可以写入任意数量的字符串

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt", "w");
  //fwrite函数
    const char* str = "abcdefg";
  fwrite(str, 1, strlen(str), fp);
  //关闭文件
  fclose(fp);
  return 0;
}

文件就变成了    

4、文件定位

fseek

fseek函数可以用于定位元素在文件中的位置

屏幕截图 2023-07-29 215404.png

可以使用 fseek 在文件的任何位置重新定位指针。 此外还可以在文件结尾外放置指针。

如下便是fseek函数的三种原始值用法:

#include<stdio.h>
#include<string.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt", "r+");
  char str[200] = { 0 };
  fseek(fp, 3, SEEK_SET);//定位第三个元素
  fread(str, 1, 3, fp);//从第三个元素开始往后读取
  printf("%s\n", str);
  //关闭文件
  fclose(fp);
  return 0;
}

我的文件内容为        

输出为:

456

    char str[200] = { 0 };
  fseek(fp, 3, SEEK_SET);//定位第三个元素为首元素
  fread(str, 1, 3, fp);//从第三个元素开始往后读取3个元素
  printf("%s\n", str);
  fseek(fp, 3, SEEK_CUR);//定位当前读到的位置,即第六个元素为首元素
  fread(str, 1, 3, fp);//从当前位置开始往后读取3个元素
  printf("%s\n", str);

输出为:

456

bcd

    char str[200] = { 0 };
  fseek(fp, -4, SEEK_END);//以倒数第三个元素为首元素地址
  fread(str, 1, 3, fp);//从当前位置开始往后读取3个元素
  printf("%s\n", str);

输出为:

cde

rewind

rewind函数可以重置文件指针,返回到文件的开头

ftell

ftell可以显示文件指针当前的位置

我们可以将两者结合来计算文件大小

#include<stdio.h>
#include<string.h>
int main()
{
  //打开文件
  // \是转义字符,为了避免影响,这里使用\\
  FILE* fp = fopen("C:\\Users\\周星辰\\Desktop\\文件操作.txt", "r+");
  //rewind函数可以重置文件指针,返回到文件的开头
  rewind(fp);
  fseek(fp, 0, SEEK_END);
  int size = ftell(fp);//ftell可以显示文件指针当前的位置
  printf("文件的大小:%d\n", size);
  //关闭文件
  fclose(fp);
  return 0;
}

输出为:

文件的大小:14

相关文章
|
16小时前
|
存储 编译器 C语言
关于文件操作---C语言
关于文件操作---C语言
|
16小时前
|
存储 程序员 C语言
C语言-文件操作
C语言-文件操作
53 2
|
16小时前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
49 0
|
16小时前
|
存储 编译器 数据库
【文件操作】C语言
【文件操作】C语言
|
16小时前
|
C语言
C语言文件操作
C语言文件操作
18 0
C语言文件操作
|
16小时前
|
C语言
C语言文件操作
C语言文件操作
|
16小时前
|
存储 程序员 编译器
【C语言】深度探讨文件操作(一)
【C语言】深度探讨文件操作(一)
|
16小时前
|
存储 程序员 C语言
C语言:文件操作
C语言:文件操作
11 1
|
16小时前
|
存储 C语言 C++
【C语言】文件与文件操作
前言:我们通过学习的技术可以完成计算与字符串处理,但程序结束之后就都消失了,这样岂不可惜。我们通过文件与数据持久化保存相关的基础知识。
10 0
|
16小时前
|
存储 编译器 C语言
C语言中的文件操作指南
C语言中的文件操作指南
14 0

热门文章

最新文章