【C语言】探秘神奇的“文件”世界 您所在的位置:网站首页 fopen打开的文件被覆盖 【C语言】探秘神奇的“文件”世界

【C语言】探秘神奇的“文件”世界

2023-06-29 11:17| 来源: 网络整理| 查看: 265

大家好呀!今天就带你们一起探索一下C语言里的神秘世界——“文件”!

首先,我们要知道,“文件”是C语言中用来存储和操作数据的重要工具。就像二次元世界里的魔法书一样,文件能够记录各种各样的信息,是程序员们的得力助手。

文件可以分为两大类:文本文件和二进制文件。文本文件就像是我们日常生活中的小说、漫画,能够以纯文本的形式存储和读取信息。而二进制文件则更加神奇,它可以保存任何形式的数据,就像是一本充满了各种魔法咒语的书!

文件指针

文件指针是一个特殊的指针,它用于指向文件中的某个位置。我们可以使用文件指针来读取和写入文件。

指向文件有关信息(包括文件名、状态和当前位置,保存在一个结构体变量中)的指针

在使用文件之前,需要在内存中为其分配空间,用来存放文件的基本信息。

在编写程序时,可直接使用“FILE”类型来定义变量。

文件的打开和关闭

为了能够操作这些神奇的“文件”,C语言提供了一些强大的函数供我们使用。比如,我们可以使用fopen()函数来打开一个文件并返回一个文件指针,就像是拿到了一把魔法笔;fclose()函数能够关闭文件,就像是把魔法书收进了书架;而fprintf()和fscanf()函数则是我们的神奇魔力,可以用来向文件写入数据和从文件中读取数据。

那么,让我们来看看一个简单的例子吧!假设我们要创建一个文本文件,并向其中写入一些信息。首先,我们需要使用`fopen()`函数来打开文件,像这样:

FILE *file = fopen("magic.txt", "w");

或者

FILE *fp; //fp是一个指向FILE类型的指针变量 fp = fopen("magic.txt", "w"); //文件名,使用文件方式

这里,我们使用了fopen()函数来创建一个名为"magic.txt"的文件,并指定了写入模式("w")。接着,我们可以使用fprintf()函数向文件中写入一些内容,就像是用魔法笔书写咒语一样:

fprintf(file, "Hello, File World!");

最后,别忘了使用fclose()函数来关闭文件,就像是把魔法书放回书架一样:

fclose(file);

fclose函数也带回一个值,当正常完成关闭文件操作时,返回值为0,否则返回EOP。

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

C语言中,EOF是个宏,在stdio.h文件中进行定义:

#define EOF (-1)

即:EOF就是整型数-1。(返回EOF即返回整形数-1)

有了这些魔法函数,我们就能够轻松地操作文件啦!不论是读取数据、写入数据,还是对文件进行其他操作,都可以通过这些函数来实现。

使用文件方式

‘r’:只读。该文件必须已存在。打开一个文本文件,只允许读数据。

‘w’:只写。打开或建立一个文本文件,只允许写数据。

‘r+’:可读可写。该文件必须已存在,写为追加在文件内容末尾。

‘rb’:只读。打开一个二进制文件,只允许读数据。

‘w+’:写读。打开创建新文件并写入数据,如果文件已存在,则覆盖写。

‘wb’:打开或建立一个二进制文件,只允许写数据。

‘a’:追加写。若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。

‘a+’:追加读写。打开文件方式与写入方式和'a'一样,但是可以读。需注意的是你若刚用‘a+’打开一个文件,一般不能直接读取,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。

文件的读写

概述

字符(每次只读一个):fputc,fgetc,

字符串:fputs,fgets,

读写磁盘文件:fprintf,fscanf,

对整块数据进行读写:fread,fwrite,

在C语言中,我们可以使用一些函数来进行文件的读写操作。这些函数可以让我们从文件中读取数据,或者将数据写入到文件中。下面是一些常用的函数。 1. fputc和fgetc函数:

#include int main() {     FILE *fp;     char c;     // 打开文件     fp = fopen("file.txt", "w");     // 写入数据到文件     fputc('H', fp);     fputc('e', fp);     fputc('l', fp);     fputc('l', fp);     fputc('o', fp);     // 关闭文件     fclose(fp);     // 打开文件     fp = fopen("file.txt", "r");     // 从文件中读取数据并输出     while ((c = fgetc(fp)) != EOF) {         printf("%c", c);     }     // 关闭文件     fclose(fp);     return 0; }

在这个例子中,我们使用了fputc函数将字符逐个写入到文件中,然后使用fgetc函数从文件中逐个读取字符并输出。这样,我们就实现了文件的写入和读取。

一般形式: ch = fputc(要输出的字符,fp);

ch = fgetc(fp);   //从fp指向的文件读入一个字符赋值给ch

2. fputs和fgets函数:

#include int main() {     FILE *fp;     char str[100];     // 打开文件     fp = fopen("file.txt", "w");     // 写入数据到文件     fputs("Hello, world!", fp);     // 关闭文件     fclose(fp);     // 打开文件     fp = fopen("file.txt", "r");     // 从文件中读取数据并输出     fgets(str, 100, fp);     printf("%s", str);     // 关闭文件     fclose(fp);     return 0; }

在这个例子中,我们使用了fputs函数将字符串写入到文件中,然后使用fgets函数从文件中读取字符串到字符数组中并输出。这样,我们就实现了文件的写入和读取。

一般形式:

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

fgets(字符数组名,n,文件指针);   //n表示所得到的字符串中字符的个数,包括'\0'

3. fprintf和fscanf函数:

#include int main() {     FILE *fp;     int num1 = 10, num2;     // 打开文件     fp = fopen("file.txt", "w");     // 写入数据到文件     fprintf(fp, "%d", num1);     // 关闭文件     fclose(fp);     // 打开文件     fp = fopen("file.txt", "r");     // 从文件中读取数据并输出     fscanf(fp, "%d", &num2);     printf("%d", num2);     // 关闭文件     fclose(fp);     return 0; }

在这个例子中,我们使用了fprintf函数将整数写入到文件中,然后使用fscanf函数从文件中读取整数并输出。这样,我们就实现了文件的写入和读取。

一般形式:

ch = fprintf(文件类型指针,格式字符串,输出列表);

fscanf(文件类型指针,格式字符串,输入列表);

4. fread和fwrite函数:

#include int main() {     FILE *fp;     int arr1[5] = {1, 2, 3, 4, 5};     int arr2[5];     // 打开文件     fp = fopen("file.txt", "wb");     // 写入数据到文件     fwrite(arr1, sizeof(int), 5, fp);     // 关闭文件     fclose(fp);     // 打开文件     fp = fopen("file.txt", "rb");     // 从文件中读取数据并输出     fread(arr2, sizeof(int), 5, fp);     for (int i = 0; i < 5; i++) {         printf("%d ", arr2[i]);     }     // 关闭文件     fclose(fp);     return 0; }

在这个例子中,我们使用了fwrite函数将整型数组写入到文件中,然后使用fread函数从文件中读取整型数组并输出。这样,我们就实现了文件的写入和读取。

一般形式:

fread(buffer,size,count,fp);   //从fp所指的文件中读入count次,每次读size字节,读入的信息存在buffer地址中。

fwrite(buffer,size,count,fp);

注:buffer是一个指针

通过这些函数,我们可以轻松地实现文件的读写操作。掌握了这些知识,我们就能更好地处理文件相关的任务了。

文件的定位

概述

fseek  移动文件内部位置指针。

rewind  定位文件指针,使位置指针重新返回文件的开头,无返回值。

ftell  得到流式文件中的当前位置,用相对于文件开头的位移量表示。

当然啦,这只是C语言文件世界的冰山一角。在这个神奇的世界里,还有很多其它的函数和技巧等待着我们去探索。

以上就是今天的分享啦!希望小伙伴们可以对C语言中的“文件”有更深入的了解。如果你对这个话题感兴趣的话,不妨多多研究一下,相信你会发现更多有趣的东西哦!记得多多关注我哟,我们下次再见!么么哒~(づ ̄3 ̄)づ╭❤~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有