C 语言文件基础详解
创始人
2025-07-08 12:10:54
0

一、引言

C语言是一种通用的、过程式的计算机程序设计语言。它具有高效、灵活、可移植性强等特点,被广泛应用于系统软件开发、嵌入式系统开发等领域。在C语言编程中,文件操作是一个非常重要的部分。本文将详细介绍C语言文件的基础知识,包括文件的打开、关闭、读写等操作,并通过实例代码进行讲解。

二、文件指针

在C语言中,文件被看作是一个字符序列,即一个字节流。程序通过文件指针来访问文件。文件指针是一个指向文件的指针变量,通过它可以对文件进行各种操作。在C语言中,文件指针的类型为FILE,它定义在头文件stdio.h中。

三、文件的打开与关闭

1.打开文件

在C语言中,打开一个文件需要使用fopen()函数。该函数的原型如下:

FILE *fopen(const char *filename, const char *mode);

其中,filename是文件名,mode是打开方式。打开方式有以下几种:

  • "r":以只读方式打开文件,文件必须存在。
  • "w":以只写方式打开文件,如果文件不存在则创建,如果文件存在则清空内容。
  • "a":以追加方式打开文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容。
  • "r+":以读写方式打开文件,文件必须存在。
  • "w+":以读写方式打开文件,如果文件不存在则创建,如果文件存在则清空内容。
  • "a+":以读写方式打开文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容。示例代码如下:
FILE *fp;  

fp = fopen("test.txt", "w");  

if (fp == NULL) {  

    printf("打开文件失败\n");  

    exit(1);  

}

2.关闭文件

在C语言中,关闭一个文件需要使用fclose()函数。该函数的原型如下:

int fclose(FILE *stream);

其中,stream是文件指针。示例代码如下:

fclose(fp);

四、文件的读写操作

1.读文件

在C语言中,读文件可以使用fscanf()、fgets()和fread()等函数。其中,fscanf()用于按格式读取文件内容,fgets()用于读取一行文本,fread()用于读取二进制数据。示例代码如下:

(1) 使用fscanf()读取文件内容:

int num1, num2;  

fscanf(fp, "%d %d", &num1, &num2); // 从文件中读取两个整数并保存到num1和num2中

(2) 使用fgets()读取一行文本:

char str[100];  

fgets(str, 100, fp); // 从文件中读取一行文本并保存到str中

(3) 使用fread()读取二进制数据:

int data[10];  

fread(data, sizeof(int), 10, fp); // 从文件中读取10个整数并保存到data数组中

2.写文件

在C语言中,写文件可以使用fprintf()、fputs()和fwrite()等函数。其中,fprintf()用于按格式写入文件内容,fputs()用于写入一行文本,fwrite()用于写入二进制数据。示例代码如下:

(1) 使用fprintf()写入文件内容:

int num = 100;  

fprintf(fp, "%d", num); // 将整数num写入文件中

(2) 使用fputs()写入一行文本:

char str[] = "Hello, world!";  

fputs(str, fp); // 将字符串str写入文件中,注意字符串结尾的'\0'不会被写入文件中。因此在使用fgets读取的时候需要注意字符串的长度。

五、文件定位操作

在C语言中,我们还可以通过文件定位函数来操作文件指针的位置,从而实现文件的随机读写。主要的文件定位函数包括fseek()、ftell()和rewind()。

1.fseek()函数

fseek()函数用于设置文件指针的位置。其函数原型如下:

int fseek(FILE *stream, long offset, int whence);

其中,stream是文件指针,offset是偏移量,whence是起始位置(SEEK_SET表示文件开始,SEEK_CUR表示当前位置,SEEK_END表示文件末尾)。

示例代码如下:

fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾

2.ftell()函数

ftell()函数用于获取当前文件指针的位置。其函数原型如下:

long ftell(FILE *stream);

示例代码如下:

long pos = ftell(fp); // 获取当前文件指针的位置并保存到pos中

3.rewind()函数

rewind()函数用于将文件指针重新设置到文件的开头。其函数原型如下:

void rewind(FILE *stream);

示例代码如下:

rewind(fp); // 将文件指针重新设置到文件的开头

六、错误处理

在C语言中进行文件操作时,如果发生错误,可以使用ferror()函数来检测错误,使用clearerr()函数来清除错误标志。示例代码如下:

if (ferror(fp)) { // 检测文件操作是否发生错误  

    printf("文件操作发生错误\n");  

    clearerr(fp); // 清除错误标志  

}

七、总结

本文详细介绍了C语言中的文件基础知识,包括文件的打开、关闭、读写等操作,以及文件的定位操作和错误处理。熟练掌握这些知识,对于进行C语言编程是非常有帮助的。在实际编程中,我们需要根据具体的需求选择合适的文件操作函数来完成相应的任务。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...