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

相关文章
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9
|
1月前
|
存储 数据管理 C语言
C 语言中的文件操作:数据持久化的关键桥梁
C语言中的文件操作是实现数据持久化的重要手段,通过 fopen、fclose、fread、fwrite 等函数,可以实现对文件的创建、读写和关闭,构建程序与外部数据存储之间的桥梁。
|
2月前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
139 3
|
2月前
|
存储 C语言
【c语言】玩转文件操作
本文介绍了C语言中文件操作的基础知识,包括文件的打开和关闭、文件的顺序读写、文件的随机读写以及文件读取结束的判定。详细讲解了`fopen`、`fclose`、`fseek`、`ftell`、`rewind`等函数的使用方法,并通过示例代码展示了如何进行文件的读写操作。最后,还介绍了如何判断文件读取结束的原因,帮助读者更好地理解和应用文件操作技术。
52 2
|
3月前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
4月前
|
C语言
C语言——文件操作
本文介绍了文件的基本操作,包括文件的打开、关闭、读取和写入。使用`fopen`函数以不同模式(如“r”、“w”等)打开文件,并通过`fclose`关闭。文章详细解释了如何利用`fputc`、`fputs`及`fprintf`进行格式化写入,同时介绍了`fgetc`、`fgets`和`fscanf`用于文件内容的读取。此外,还涵盖了二进制文件的读写方法以及如何通过`fseek`、`ftell`和`rewind`实现文件的随机访问。
61 1
C语言——文件操作
|
3月前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
37 2
|
3月前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
3月前
|
存储 C语言
简述C语言文件操作
简述C语言文件操作
14 0
|
3月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序