C语言对文件的输入输出

简介: C语言对文件的输入输出

C语言对文件的输入输出

在C语言中,对文件的输入输出操作是通过标准库函数来实现的。这些函数允许你打开文件、读取文件内容、写入数据到文件以及关闭文件。下面是一些基本的文件操作函数和它们的使用示例。

打开文件

使用 fopen 函数来打开一个文件。该函数需要两个参数:文件名和打开模式。

c复制代码

 

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

打开模式可以是以下之一或它们的组合:

· "r":以只读方式打开文件。

· "w":以写入方式打开文件,如果文件不存在则创建它。如果文件已存在,则清空其内容。

· "a":以追加方式打开文件,如果文件不存在则创建它。写入的数据将被添加到文件的末尾。

· "r+":以读写方式打开文件。

· "w+":以读写方式打开文件,如果文件不存在则创建它。

· "a+":以读写方式打开文件,如果文件不存在则创建它。写入的数据将被添加到文件的末尾。

示例:

c复制代码

 

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

 

if (file == NULL) {

 

perror("Error opening file");

 

return 1;

 

}

写入文件

使用 fprintf 函数或 fwrite 函数将数据写入文件。

c复制代码

 

int fprintf(FILE *stream, const char *format, ...);

 

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

示例:

c复制代码

 

// 使用 fprintf 写入字符串

 

fprintf(file, "Hello, World!\n");

 

 

 

// 使用 fwrite 写入二进制数据

 

int number = 42;

 

fwrite(&number, sizeof(int), 1, file);

读取文件

使用 fscanf 函数或 fread 函数从文件中读取数据。

c复制代码

 

int fscanf(FILE *stream, const char *format, ...);

 

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

示例:

c复制代码

 

// 使用 fscanf 读取字符串

 

char buffer[100];

 

fscanf(file, "%99s", buffer); // %99s 防止缓冲区溢出

 

 

 

// 使用 fread 读取二进制数据

 

int number;

 

fread(&number, sizeof(int), 1, file);

关闭文件

使用 fclose 函数关闭文件。

c复制代码

 

int fclose(FILE *stream);

示例:

c复制代码

 

fclose(file);

错误处理

当进行文件操作时,应该始终检查函数调用的返回值以处理可能的错误。例如,如果 fopen 函数失败,它将返回 NULL,此时可以使用 perror 函数打印出错误信息。

示例程序

下面是一个简单的C语言程序,它创建一个文件,写入一些文本,然后读取并显示它:

c复制代码

 

#include <stdio.h> 

 

 

 

int main() {

 

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

 

if (file == NULL) {

 

perror("Error opening file");

 

return 1;

 

}

 

 

 

// 写入数据

 

fprintf(file, "This is a test.\n");

 

 

 

// 回到文件的开始位置以读取数据

 

rewind(file);

 

 

 

// 读取数据

 

char buffer[100];

 

while (fgets(buffer, sizeof(buffer), file) != NULL) {

 

printf("%s", buffer);

 

}

 

 

 

// 关闭文件

 

fclose(file);

 

 

 

return 0;

 

}

请注意,当使用 fopen 以写入模式(ww+a)打开文件时,如果文件已存在,它的内容将被截断为零长度。如果你想在文件的现有内容后追加数据,应该使用追加模式(aa+)。如果你想读取和写入同一个文件,并且不希望丢失现有内容,你应该使用更新模式(r+)。

 

目录
相关文章
|
存储 编译器 程序员
c语言的文件操作与文件缓冲区
如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件。磁盘(硬盘)上的文件是文件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序文件、数据文件(从文件功能的角度来分类 的)。就比如说我们电脑中以.txt为后缀的就是文件的一种,他就是数据文件。.exe为后缀的就为程序文件。函数名功能适用范围fgetc字符输入函数所有输入流fputc字符输出函数所有输出流fgets。
635 0
|
人工智能 C语言
|
存储 小程序 C语言
【C语言程序设计——文件】文件操作(头歌实践教学平台习题)【合集】
本文介绍了C语言中的文件操作,分为两个关卡。第1关任务是将键盘输入的字符(以#结束)存入`file1.txt`并显示输出;第2关任务是从键盘输入若干行文本(每行不超过80个字符,用-1作为结束标志),写入`file2.txt`后再读取并显示。文中详细讲解了文件的打开、读取(使用`fgetc()`和`fgets()`)、写入(使用`fputc()`和`fputs()`)及关闭操作,并提供了示例代码和测试说明。
628 5
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
1034 3
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
1057 4
|
C语言
【C语言】探索文件读写函数的全貌(三)
【C语言】探索文件读写函数的全貌
211 2
|
存储 C语言
【C语言】探索文件读写函数的全貌(二)
【C语言】探索文件读写函数的全貌
250 2
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
存储 C语言
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
416 3