C语言中的文件操作

简介: C语言中的文件操作

C语言中的文件操作

 

在C语言中,文件操作是通过一系列标准库函数来实现的,这些函数允许程序打开文件、读写文件内容以及关闭文件。下面将详细介绍这些操作的相关API。

1. 文件打开 - fopen()

fopen() 函数用于打开文件,并返回一个指向 FILE 类型的指针,该指针用于后续的文件操作。如果文件打开失败,则返回 NULL。

#include <stdio.h>

 

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

filename 是要打开文件的名称(包括路径)。

mode 是打开文件的模式,如 "r"(只读)、"w"(只写,文件不存在则创建,存在则覆盖)、"a"(追加,文件不存在则创建)、"r+"(读写,文件必须存在)等。

2. 文件读写

文件读写操作有很多函数,这里介绍最常用的几个。

读取操作

fscanf(): 从文件读取格式化输入。

fgets(): 从文件读取一行。

fread(): 从文件读取数据块。

写入操作

fprintf(): 向文件写入格式化输出。

fputs(): 向文件写入一个字符串。

fwrite(): 向文件写入数据块。

3. 文件定位 - fseek(), ftell(), rewind()

fseek(): 移动文件内部的位置指针。

ftell(): 返回当前位置指针相对于文件开头的偏移量。

rewind(): 将文件内部的位置指针重置回文件的开头。

4. 文件关闭 - fclose()

fclose() 函数用于关闭一个打开的文件。关闭文件是一个好习惯,可以释放文件相关的资源,并确保所有的输出都被正确写入文件。

#include <stdio.h>

 

int fclose(FILE *stream);

stream 是指向 FILE 对象的指针,该对象标识了要关闭的文件。

如果关闭成功,则返回 0;如果失败,则返回 EOF。

示例代码

下面是一个简单的示例,演示如何使用 fopen(), fprintf(), 和 fclose() 来写入文件:

#include <stdio.h>

 

int main() {

FILE *fp = fopen("example.txt", "w"); // 打开文件用于写入

if (fp == NULL) {

perror("Error opening file");

return -1;

}

 

fprintf(fp, "Hello, World!\n"); // 写入字符串到文件

 

fclose(fp); // 关闭文件

 

return 0;

}

这个例子创建(或覆盖)了一个名为 example.txt 的文件,并向其中写入了 "Hello, World!\n"。然后,它关闭了文件以释放资源。

 

 

在C语言中,文件操作是一个核心而基础的功能,它允许程序与存储在硬盘上的数据进行交互。通过一系列标准库函数,C语言提供了打开文件、读写文件内容以及关闭文件的能力。这些操作对于数据处理、日志记录、配置文件读写等场景至关重要。以下将详细介绍C语言中的文件操作,并通过代码示例来展示如何使用这些函数。

1. 文件打开 - fopen()

fopen() 函数用于打开文件,并返回一个指向 FILE 类型的指针,该指针用于后续的文件操作。如果文件打开失败,则返回 NULL。

函数原型如下:

#include <stdio.h>

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

filename 是要打开文件的名称(包括路径)。

mode 是打开文件的模式,如 "r"(只读)、"w"(只写,文件不存在则创建,存在则覆盖)、"a"(追加,文件不存在则创建)、"r+"(读写,文件必须存在)等。

示例代码:

#include <stdio.h>

 

int main() {

FILE *fp = fopen("example.txt", "w"); // 打开文件用于写入

if (fp == NULL) {

perror("Error opening file");

return -1;

}

 

// 后续文件操作...

 

fclose(fp); // 完成后关闭文件

return 0;

}

2. 文件写入

文件写入操作有多种函数可用,这里介绍最常用的 fprintf() 和 fwrite()。

fprintf():向文件写入格式化输出,类似于 printf() 但输出到文件。

示例代码:

#include <stdio.h>

 

int main() {

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

if (fp == NULL) {

perror("Error opening file");

return -1;

}

 

fprintf(fp, "Hello, World!\n"); // 写入字符串

fprintf(fp, "Number: %d\n", 123); // 写入格式化数据

 

fclose(fp);

return 0;

}

fwrite():向文件写入数据块,常用于二进制文件或大量数据的写入。

示例代码:

#include <stdio.h>

#include <stdlib.h>

 

int main() {

FILE *fp = fopen("data.bin", "wb"); // 打开文件用于二进制写入

if (fp == NULL) {

perror("Error opening file");

return -1;

}

 

int numbers[] = {1, 2, 3, 4, 5};

size_t written = fwrite(numbers, sizeof(int), 5, fp); // 写入5个整数

 

if (written != 5) {

fprintf(stderr, "Error writing to file\n");

}

 

fclose(fp);

return 0;

}

3. 文件读取

文件读取操作同样有多种函数,这里介绍 fscanf(), fgets(), 和 fread()。

 

fscanf():从文件读取格式化输入,类似于 scanf() 但从文件读取。

 

fgets():从文件读取一行,直到遇到换行符或文件结束符。

 

fread():从文件读取数据块,常用于二进制文件或大量数据的读取。

 

示例代码(使用 fgets()):

#include <stdio.h>

#include <stdlib.h>

 

int main() {

FILE *fp = fopen("example.txt", "r");

if (fp == NULL) {

perror("Error opening file");

return -1;

}

 

char buffer[100];

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

printf("%s", buffer);

}

 

fclose(fp);

return 0;

}

4. 文件定位

文件定位是指移动文件内部的位置指针,以便从文件的特定位置开始读写数据。fseek(), ftell(), 和 rewind() 是用于文件定位的函数。

fseek():移动文件内部的位置指针。

ftell():返回当前位置指针相对于文件开头的偏移量。

 

目录
相关文章
|
5天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
26天前
|
C语言
【C语言篇】文件操作(下篇)
因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂ 件。如果不做,可能导致读写⽂件的问题。
|
26天前
|
C语言 索引
【C语言】文件操作全解速览
【C语言】文件操作全解速览
27 0
|
26天前
|
存储 程序员 C语言
【C语言篇】文件操作(上篇)
在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。
|
1月前
|
存储 编译器 程序员
【C语言】文件操作讲解
【C语言】文件操作讲解
|
3月前
|
C语言
C语言——文件操作
C语言——文件操作
44 2
C语言——文件操作
|
3月前
|
存储 程序员 编译器
文件操作(C语言)
文件操作(C语言)
|
3月前
|
存储 C语言 C++
【C语言基础】:文件操作详解(前篇:准备知识)
【C语言基础】:文件操作详解(前篇:准备知识)
|
3月前
|
C语言
【C语言基础】:文件操作详解(后篇)-2
【C语言基础】:文件操作详解(后篇)
|
3月前
|
存储 C语言
【C语言基础】:文件操作详解(后篇)-1
【C语言基础】:文件操作详解(后篇)