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

这篇具有很好参考价值的文章主要介绍了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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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语言中的文件编程。文章来源地址https://www.toymoban.com/news/detail-487540.html

到了这里,关于C语言基础教学(文件操作)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言基础】:内存操作函数

             书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 一、memcpy函数的使用和模拟实现 函数原型 : 内存复制块 将num字节的值从源指向的位置直接复制到目标指向的内存块。 源指针和目标指针所指向的对

    2024年04月11日
    浏览(32)
  • C语言基础之——操作符(上)

    本篇文章,我们将展开讲解C语言中的各种常用操作符,帮助大家更容易的解决一些运算类问题。 这里提醒一下小伙伴们,本章知识会大量涉及到二进制序列,不清楚二进制序列的小伙伴,可以去阅读我的另一篇文章 《数据在内存中的存储》 学习了解。 目录 一.操作符分类

    2024年02月11日
    浏览(32)
  • C++语言基础——文件

    目录 对齐方式 ‘stream’流文件读写 文件操作 流系体系 流:数据从一个对象到另一个对象的传输。 功能:标准输入输出+文件处理 分类 含义 文本流 一串ASCII子符 二进制流 一串二进制 ‘ios’是抽象类 ‘ostream’是‘cout’、‘clog’、‘cerr’的类 ‘istream’是‘cin’的类 全局

    2023年04月24日
    浏览(32)
  • C语言基础——文件

    所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。 从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件 是指驻留在

    2024年02月03日
    浏览(29)
  • 顺序表基本操作算法——基础代码(C语言)

     创建一个顺序表(数据元素个数为5), 输出顺序表中的所有数据元素 查找第3个位置上的元素 查找元素15是否在顺序表中,如果在,请输出该元素在顺序表中的位置 在顺序表中的第1个位置插入数据0 删除刚刚插入的元素 输出顺序表中的所有数据元素 运行结果如下  

    2024年02月06日
    浏览(37)
  • MySQL数据库基础(八):DML数据操作语言

    文章目录 DML数据操作语言 一、DML包括哪些SQL语句 二、数据的增删改(重点) 1、数据的增加操作 2、数据的修改操作 3、数据的删除操作 insert插入、update更新、delete删除 增加:insert 删除:delete 修改:update 1、数据的增加操作  基本语法: 特别注意:在SQL语句中,除了数字,

    2024年02月19日
    浏览(35)
  • Excelize Go语言操作 Office Excel文档基础库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂

    2024年02月12日
    浏览(27)
  • C#语言基础问题16:C# 中如何进行加密和解密操作?

    在 C# 中,可以使用以下几种常见的加密算法进行加密和解密操作: 对称加密算法:使用相同的密钥对数据进行加密和解密,常见的对称加密算法有 DES、3DES、AES 等。 非对称加密算法:使用公钥和私钥进行加密和解密,常见的非对称加密算法有 RSA、DSA 等。 散列算法:将数据

    2024年02月13日
    浏览(27)
  • 【Go 基础篇】探索Go语言中Map的神奇操作

    嗨,Go语言的学习者们!在编程世界中,Map是一个强大而又有趣的工具,它可以帮助我们高效地存储和操作键值对数据。Map就像是一本字典,可以让我们根据(键)快速找到对应的信息(值)。在本文中,我们将探索Go语言中Map的各种操作,包括增加、查找、删除、遍历

    2024年02月10日
    浏览(25)
  • C 语言结构体和枚举完全指南:成员访问、字符串操作、枚举基础

    要访问结构体的成员,请使用点语法 (.): 现在您可以使用只使用一个结构体,轻松创建多个具有不同值的结构体变量: 请记住,C 语言中的字符串实际上是字符数组,不幸的是,您无法像这样为数组分配值: 会发生错误: prog.c:12:15: error: assignment to expression with array type 但是,

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包