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():返回当前位置指针相对于文件开头的偏移量。

 

目录
相关文章
|
1月前
|
存储 C语言
【c语言】玩转文件操作
本文介绍了C语言中文件操作的基础知识,包括文件的打开和关闭、文件的顺序读写、文件的随机读写以及文件读取结束的判定。详细讲解了`fopen`、`fclose`、`fseek`、`ftell`、`rewind`等函数的使用方法,并通过示例代码展示了如何进行文件的读写操作。最后,还介绍了如何判断文件读取结束的原因,帮助读者更好地理解和应用文件操作技术。
39 2
|
2月前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
3月前
|
C语言
C语言——文件操作
本文介绍了文件的基本操作,包括文件的打开、关闭、读取和写入。使用`fopen`函数以不同模式(如“r”、“w”等)打开文件,并通过`fclose`关闭。文章详细解释了如何利用`fputc`、`fputs`及`fprintf`进行格式化写入,同时介绍了`fgetc`、`fgets`和`fscanf`用于文件内容的读取。此外,还涵盖了二进制文件的读写方法以及如何通过`fseek`、`ftell`和`rewind`实现文件的随机访问。
53 1
C语言——文件操作
|
2月前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
25 2
|
2月前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
2月前
|
存储 C语言
简述C语言文件操作
简述C语言文件操作
11 0
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
存储 程序员 编译器
C语言文件操作(1)
【10月更文挑战第1天】
|
2月前
|
存储 C语言
C语言的文件操作
C语言的文件操作
23 0
|
2月前
|
存储 移动开发 Unix
C 语言文件操作详解
C 语言文件操作详解