找回密码
 立即注册
查看: 351|回复: 0

[其它] C语言 - 文件操作

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-23 12:06:12 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-23 15:47 编辑

1. 引言

C语言是一门功能强大且灵活的编程语言,在系统级编程和嵌入式开发中应用广泛。文件操作是C语言的重要功能之一,它允许程序读取和写入文件,从而实现数据的持久化存储。在本篇文章中,我们将详细介绍C语言中的文件操作,包括文件的打开、读取、写入和关闭等基本操作。

1.1 文件的打开与关闭

在C语言中,文件操作通常需要包含头文件<stdio.h>。文件的打开使用fopen函数,文件的关闭使用fclose函数。

1.1.1 文件的打开

fopen函数用于打开一个文件,并返回一个指向该文件的文件指针。函数原型如下:

  1. FILE *fopen(const char *filename, const char *mode);
复制代码


参数说明:
(1) filename:要打开的文件名。
(2) mode:文件打开模式,如"r"(只读)、"w"(写入)等。

示例代码:

  1. FILE *file = fopen("example.txt", "r");
  2. if (file == NULL) {
  3.     printf("无法打开文件\n");
  4.     return 1;
  5. }
复制代码


1.1.2 文件的关闭

fclose函数用于关闭一个打开的文件,释放相关资源。函数原型如下:

  1. int fclose(FILE *stream);
复制代码


参数说明:
(1) stream:要关闭的文件指针。

示例代码:

  1. fclose(file);
复制代码


1.2 文件的读取操作

C语言提供了多种文件读取方式,常用的包括fgetc、fgets和fread函数。

1.2.1 使用fgetc读取单个字符

fgetc函数用于从文件中读取一个字符。函数原型如下:

  1. int fgetc(FILE *stream);
复制代码


示例代码:

  1. FILE *file = fopen("example.txt", "r");
  2. if (file != NULL) {
  3.     int ch;
  4.     while ((ch = fgetc(file)) != EOF) {
  5.         putchar(ch);
  6.     }
  7.     fclose(file);
  8. }
复制代码


1.2.2 使用fgets读取一行文本

fgets函数用于从文件中读取一行文本。函数原型如下:

  1. char *fgets(char *str, int n, FILE *stream);
复制代码

参数说明:
(1) str:用于存储读取到的字符串。
(2) n:指定读取的最大字符数。
(3) stream:文件指针。

示例代码:

  1. FILE *file = fopen("example.txt", "r");
  2. if (file != NULL) {
  3.     char buffer[100];
  4.     while (fgets(buffer, sizeof(buffer), file) != NULL) {
  5.         printf("%s", buffer);
  6.     }
  7.     fclose(file);
  8. }
复制代码


1.2.3 使用fread读取二进制数据

fread函数用于从文件中读取指定数量的二进制数据。函数原型如下:

  1. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
复制代码


参数说明:
(1) ptr:用于存储读取到的数据。
(2) size:每个数据项的大小。
(3) nmemb:要读取的数据项数量。
(4) stream:文件指针。

示例代码:

  1. FILE *file = fopen("example.bin", "rb");
  2. if (file != NULL) {
  3.     char buffer[100];
  4.     size_t bytesRead = fread(buffer, 1, sizeof(buffer), file);
  5.     printf("读取了 %zu 字节\n", bytesRead);
  6.     fclose(file);
  7. }
复制代码


1.3 文件的写入操作

C语言也提供了多种文件写入方式,常用的包括fputc、fputs和fwrite函数。

1.3.1 使用fputc写入单个字符

fputc函数用于向文件中写入一个字符。函数原型如下:

  1. int fputc(int c, FILE *stream);
复制代码


示例代码:

  1. FILE *file = fopen("example.txt", "w");
  2. if (file != NULL) {
  3.     fputc('A', file);
  4.     fclose(file);
  5. }
复制代码


1.3.2 使用fputs写入字符串

fputs函数用于向文件中写入一个字符串。函数原型如下:

  1. int fputs(const char *str, FILE *stream);
复制代码


示例代码:

  1. FILE *file = fopen("example.txt", "w");
  2. if (file != NULL) {
  3.     fputs("Hello, World!", file);
  4.     fclose(file);
  5. }
复制代码


1.3.3 使用fwrite写入二进制数据

fwrite函数用于向文件中写入指定数量的二进制数据。函数原型如下:

  1. size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
复制代码

示例代码:

  1. FILE *file = fopen("example.bin", "wb");
  2. if (file != NULL) {
  3.     char data[] = {1, 2, 3, 4, 5};
  4.     fwrite(data, sizeof(char), sizeof(data), file);
  5.     fclose(file);
  6. }
复制代码


1.4 文件操作的错误处理

在文件操作过程中,错误处理是非常重要的。C语言提供了多个函数来检测和处理文件操作中的错误。

1.4.1 检查文件指针

在打开文件时,应始终检查文件指针是否为NULL,以确保文件成功打开。

1.4.2 使用ferror检测错误

ferror函数用于检查文件流是否发生错误。函数原型如下:

  1. int ferror(FILE *stream);
复制代码


示例代码:

  1. if (ferror(file)) {
  2.     printf("文件读取错误\n");
  3. }
复制代码


1.4.3 使用feof检测文件结束

feof函数用于检查文件流是否到达文件末尾。函数原型如下:

  1. int feof(FILE *stream);
复制代码


示例代码:

  1. if (feof(file)) {
  2.     printf("文件已读完\n");
  3. }
复制代码


2. 结论

通过本文的介绍,我们了解了C语言中文件操作的基本方法,包括文件的打开与关闭、读取与写入以及错误处理等。掌握这些基础知识,对于进行更复杂的文件操作和数据处理至关重要。在实际编程中,合理的文件操作和错误处理能够显著提高程序的稳定性和可靠性。希望这篇文章能对你理解和使用C语言文件操作有所帮助。





/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:30 , Processed in 0.075387 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表