C语言基础教学(文件操作)

文章目录

  • 前言
  • 一、文件操作基本介绍
  • 二、编程练习
  • 总结


前言

这篇文章我们来讲解C语言中的文件操作,文件操作在C语言中算是一个比较重要的知识点,我们每天都在和文件打交道,各种文件夹的打开和关闭操作,那么这篇文件带大家学习如何使用C语言中的文件操作来完成这个工作。

一、文件操作基本介绍

C语言提供了一组函数,可以用于进行文件操作。这些函数包括打开文件、关闭文件、读取文件内容和写入文件内容等。下面是对C语言中文件操作的几个常用函数的介绍和使用方法:

打开文件:
函数原型:FILE *fopen(const char *filename, const char *mode);
描述:用于打开指定文件并返回一个指向该文件的指针。
参数:

filename:要打开的文件的名称(包含路径),可以是相对路径或绝对路径。
mode:打开文件的模式,包括 “r”(只读)、“w”(写入)、 “a”(追加)等等。
返回值:如果成功,返回一个指向文件的指针;如果失败,返回空指针(NULL)。

关闭文件:
函数原型:int fclose(FILE *stream);
描述:用于关闭一个已打开的文件。
参数:stream 是指向 FILE 结构的指针,它表示要关闭的文件。
返回值:如果成功,返回 0;如果失败,返回 EOF(-1)。

读取文件内容:
函数原型:size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
描述:从文件中读取数据到指定的内存区域。
参数:

ptr:指向要读取数据存储位置的指针。
size:每个数据项的大小(以字节为单位)。
count:要读取的数据项的个数。
stream:指向 FILE 结构的指针,表示要读取的文件。
返回值:返回已成功读取的数据项个数。

写入文件内容:
函数原型:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
描述:将指定内存区域的数据写入文件。
参数:

ptr:指向要写入数据的内存区域的指针。
size:每个数据项的大小(以字节为单位)。
count:要写入的数据项的个数。
stream:指向 FILE 结构的指针,表示要写入的文件。
返回值:返回已成功写入的数据项个数。
其他常用的文件操作函数:

fseek:在文件中定位到指定的位置。
ftell:获取文件指针的当前位置。
feof:检测文件流是否已到达文件末尾。
这些函数提供了基本的文件操作功能,你可以根据具体的需求使用它们来读取和写入文件。请记得在使用完文件后,要调用 fclose 函数来关闭文件,以释放系统资源。

二、编程练习

在VS中这些操作函数都变为了带有_s的函数了,那么我们就在VS的环境下来练习一下文件操作吧。

当使用带 _s 结尾的函数时,需要注意该系列函数在 C11 标准中引入,旨在提供更安全的编程环境。以下是使用一些带有 _s 的文件操作函数的示例:

1. 使用 fopen_s 打开文件:

#include 

int main() {
	FILE* file = NULL;
	errno_t err = 0;

	err = fopen_s(&file, "example.txt", "r");
	if (err != 0) {
		printf("无法打开文件。\n");
		return 1;
	}

	// 文件操作...

	fclose(file);
	return 0;
}

2. 使用 fwrite_s 写入文件:

#include 

int main() {
	FILE* file = NULL;
	errno_t err = 0;

	err = fopen_s(&file, "example.txt", "w");
	if (err != 0) {
		printf("无法打开文件。\n");
		return 1;
	}

	const char* content = "Hello, World!";
	size_t size = strlen(content);

	err = fwrite_s(content, size, sizeof(char), size, file);
	if (err != 0) {
		printf("写入文件时发生错误。\n");
	}

	fclose(file);
	return 0;
}

3. 使用 fgets_s 读取一行文本:

#include 

int main() {
	FILE* file = NULL;
	errno_t err = 0;

	err = fopen_s(&file, "example.txt", "r");
	if (err != 0) {
		printf("无法打开文件。\n");
		return 1;
	}

	char buffer[100];
	char* result = fgets(buffer, sizeof(buffer), file);
	if (result != NULL) {
		printf("读取到的内容:%s\n", buffer);
	} else {
		printf("读取文件时发生错误。\n");
	}

	fclose(file);
	return 0;
}

4. 使用 fwrite_s 写入二进制数据:

#include 

int main() {
	FILE* file = NULL;
	errno_t err = 0;

	err = fopen_s(&file, "example.bin", "wb");
	if (err != 0) {
		printf("无法打开文件。\n");
		return 1;
	}

	int data[] = { 1, 2, 3, 4, 5 };
	size_t size = sizeof(data);
	size_t count = sizeof(data) / sizeof(int);

	err = fwrite_s(data, size, count, file);
	if (err != 0) {
		printf("写入文件时发生错误。\n");
	}

	fclose(file);
	return 0;
}

5. 使用 fread_s 读取二进制数据:

#include 

int main() {
	FILE* file = NULL;
	errno_t err = 0;

	err = fopen_s(&file, "example.bin", "rb");
	if (err != 0) {
		printf("无法打开文件。\n");
		return 1;
	}

	int data[5];
	size_t size = sizeof(data[0]);
	size_t count = sizeof(data) / size;

	err = fread_s(data, sizeof(data), size, count, file);
	if (err != 0) {
		printf("读取文件时发生错误。\n");
	}

	fclose(file);

	// 打印读取到的数据
	for (int i = 0; i < 5; i++) {
		printf("%d ", data[i]);
	}
	printf("\n");

	return 0;
}

在这个示例中,我们使用 fread_s 函数从文件中读取二进制数据,并将数据存储到整型数组 data 中。size 参数指定了每个数据项的大小,count 参数指定了要读取的数据项数量。

这些示例展示了如何使用 _s 后缀的文件读写函数来进行二进制数据的读写操作。请根据你的具体需求进行相应的修改和适应。记得在使用完文件后,要使用 fclose 函数关闭文件以释放资源。

总结

本篇文章就讲解到这里希望大家可以学会C语言中的文件编程。

你可能感兴趣的:(C语言0基础全面教程,c语言,linux,算法)