C语言的文件操作(炒详解)(上)

简介: C语言的文件操作(炒详解)

📜介绍一下文件名

一个文件要有一个唯一的文件标识,以便用户识别和使用。

文件名包括三部分:

文件路径+文件名主干+文件后缀

例如:C:\code\test.txt

文件的路径的讲解

       我们传过去的路径有两种

①绝对路径

例如 "D:\桌面\planegames_boxed.exe"

        "C:\Users\Public\Videos"

👉在这里要注意哦,如果这样直接传地址会有转义字符的影响的。

在传参时,尽量在每个斜杠前加一个斜杠,就可以解决转义字符可能带来的影响

②相对路径

💭下边将会利用文件读写时的操作进行介绍更易理解


文件的基本操作

👉文件的基本操作包括文件的打开与关闭,除了标准的输入输出文件外,其他所有的文件都必需先打开再使用,使用后还必须关闭该文件。

文件指针

       📌文件指针是一个指向文件有关信息的指针,这些信息通常包括文件名,状态和当前的位置,他们保存在一个结构体变量中,在使用文件时需要在内存中为其分配空间,用来存放文件的基本信息,该结构体类型是系统定义的,C语言规定该类型为FILE

       不同的C编译站的FILE类型包括的内容完全不同,但是大同小异,这里的细节我们不必关心。

       一般都是通过创建一个FILE的指针来维护这个FILE结构的变量,这样使用起来可以更加方便。

创建一个FILE*类型的指针变量:

FILE * pf;

pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件,就是说通过文件指针变量就能够找到与他关联的文件。

文件的打开和关闭

       文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

(在程序结束前应该关闭所有的文件,目的是为了防止应为没有关闭文件而造成的数据流失。)

ANSIC规定用fopen函数来打开文件,fclose来关闭文件。

打开文件

🏅FILE * fopen(const char* filename(文件名),const char *mode(打开方式));

关闭文件

🏅int fclose (FILE*stream);

打开方式如下

👉用只读方式打开

通过上图来看,如果文件夹中没有该文件,就会返回一个空指针,用perror判断运行后如图,当然,如果创建了data.txt文件,就不会报错啦。


用写方式呢举一个梨子

int main()
{
  FILE* pfile;
  pfile = fopen("example","w");
  if (pfile == NULL)
  {
    perror("fopen");
    return 1;
  }
  if (pfile != NULL)
  {
    fputs("fopen example", pfile);
    fclose(pfile);
  }
  return 0;
}

       上面的表格我们注意到,用写的方式打开,如果没有文件会生成一个文件,执行相关指令。如果要打开的文件时绝对路径(例如桌面),没有该文件的话也还是会在桌面创建一个出来使用的。

“fputs后续我们会讲,是将字符串输入进文件中去。”

📜运行结果如图

一定要记得关闭程序前关闭所有的文件。


利用"w"介绍相对路径

📝前边加上一个点是当前目录,可以省略。

省略时:

📝删除创建好的lalala,不省略时再次运行

📝我们如果想在上一级目录里面创建lalala呢?

📝在前边加上(.),到达上一级,在上一级的x64里创建lalala

⭐如果还想往前跑,就继续加(.),在文件夹内找到要放置进去的文件夹,这就是文件的相对路径,利用.和\来找到具体的位置,相比较没有绝对路径那么精确。

文件的读写

       打开文件后,就可以进行文件的读写,C语言提供了丰富的文件操作函数,现在对其诸个介绍。以下所有函数默认FILE * fp

fputc函数

ch = fputc (ch,fp);

该函数的作用是把一个字符写进磁盘文件fp中,其中ch就是要输入的数据。fp是文件指针变量,如果函数输出成功,返回的就是输出的字符,如果输出失败,就返回EOF。

⭐看个例子

int main()
{
  FILE* fp;
  char ch;
  if ((fp = fopen("file", "w")) == NULL)
  {
    assert("fopen");
  }
  ch = getchar();
  while (ch != '#')
  {
    fputc(ch, fp);
    ch = getchar();
  }
  fclose(fp);
  return 0;
}

⭐运行后如图:

📑这个例子读取到#则停止。

fgetc函数

ch = fgetc (fp);

这个函数的作用是从指定文件(fp指向的文件)读取一个字符赋予ch。需要注意的是,文件必须是读或者读写的方式打开。

💡上面我们将file文件里写进了几个字符,现在我们来取出他们

int main()
{
  FILE* fp;
  char ch;
  fp = fopen("file", "r");
  ch = fgetc(fp);
  while (ch != EOF)
  {
    putchar(ch);
    ch = fgetc(fp);
  }
  fclose(fp);
  return 0;
}

💡运行后如图,可以发现确实将文件中写入的字符全部拿到了。

fputs函数

fputs(字符串,文件指针);

       和fputc不同的是,这个函数的作用是向指定文件中写入一个字符串,其中字符串可以是字符常量,也可以是字符数组名,指针或者变量。

💭看例子

int main()
{
  FILE* fp;
  char filename[30], str[30];
  printf("输入文件名\n");
  scanf("%s", filename);
  if ((fp = fopen(filename, "w")) == NULL)
  {
    perror("fopen");
  }
  printf("输入字符串\n");
  getchar();
  gets(str);
  fputs(str, fp);
  fclose(fp);
  return 0;
}

💡运行后如图

目录
相关文章
|
18天前
|
存储 C语言
【c语言】玩转文件操作
本文介绍了C语言中文件操作的基础知识,包括文件的打开和关闭、文件的顺序读写、文件的随机读写以及文件读取结束的判定。详细讲解了`fopen`、`fclose`、`fseek`、`ftell`、`rewind`等函数的使用方法,并通过示例代码展示了如何进行文件的读写操作。最后,还介绍了如何判断文件读取结束的原因,帮助读者更好地理解和应用文件操作技术。
26 2
|
1月前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
1月前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
19 2
|
2月前
|
C语言
C语言——文件操作
本文介绍了文件的基本操作,包括文件的打开、关闭、读取和写入。使用`fopen`函数以不同模式(如“r”、“w”等)打开文件,并通过`fclose`关闭。文章详细解释了如何利用`fputc`、`fputs`及`fprintf`进行格式化写入,同时介绍了`fgetc`、`fgets`和`fscanf`用于文件内容的读取。此外,还涵盖了二进制文件的读写方法以及如何通过`fseek`、`ftell`和`rewind`实现文件的随机访问。
49 1
C语言——文件操作
|
1月前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
29天前
|
存储 C语言
简述C语言文件操作
简述C语言文件操作
9 0
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
1月前
|
存储 程序员 编译器
C语言文件操作(1)
【10月更文挑战第1天】
|
1月前
|
存储 C语言
C语言的文件操作
C语言的文件操作
19 0
|
1月前
|
存储 移动开发 Unix
C 语言文件操作详解
C 语言文件操作详解